N311V has asked for the wisdom of the Perl Monks concerning the following question:
Hi PerlMonks, I'm having trouble writing a script so I've come here seeking assistance. I need to replace part of a line with part of the following line if a requirement is met. Example of file:
<Hit_num>6</Hit_num> <Hit_id>gnl|BL_ORD_ID|3665984</Hit_id> <Hit_def>gi|158703516|gb|ABW77886.1| odorant-bin... <Hit_accession>3665984</Hit_accession>
I need to replace "gnl|BL_ORD_ID|3665984" that bit in the second line with "gi|158703516|gb|ABW77886.1|" this bit in the third line. My current script is:
#!/usr/bin/perl -w use strict; use warnings; my $file = "$ARGV[0]"; open IN, ">fixed_$file"; open A, $file; my $replace = (); while (<A>) { if ($_ =~ /Hit_id/) { next; $replace =~ m/gi|.|/; } $_ =~ s/\>.\</\>$replace\</; print IN "$_"; } close IN; close A; exit;
I don't think next is doing what I want nor do I know if my regular expression are correct. Any help would be appreciated. Thanks
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: replace part of a line with part of the following line after if is TRUE
by aaron_baugher (Curate) on Oct 02, 2013 at 02:04 UTC | |
by N311V (Initiate) on Oct 02, 2013 at 03:24 UTC | |
|
Re: replace part of a line with part of the following line after if is TRUE
by ww (Archbishop) on Oct 02, 2013 at 03:28 UTC | |
|
Re: replace part of a line with part of the following line after if is TRUE
by Laurent_R (Canon) on Oct 02, 2013 at 06:34 UTC | |
|
Re: replace part of a line with part of the following line after if is TRUE
by Anonymous Monk on Oct 02, 2013 at 01:52 UTC |