naturalsciences has asked for the wisdom of the Perl Monks concerning the following question:
I created a code to sort out these lines of text that would have both search phrases in them. It did it's job without complains. Then I had a need to search lines thusly.Get a line(lineA) > get next line(lineB) > search next line for matches > if matches found print lineA followed by line B
In short I wanted to print line with matches and a line previous to this.
The original code that worked for finding matches in a line was like this (its a bit shortened version here)
open IN, 'sample.fa'|| die("Could not open file!"); open OUT, '>modsample.fa'|| die("Could not open file!"); while ($line = <IN>) { if ($line=~m/mamma/&&$line=~m/mia/) {print OUT "$line";} else {print ".";} #just to look at something while it works }
It found the lines and printed them out. when I modified the script to look for lines and print both matched lines and the one precedening. I got a blank output file. For some reason it could not do its matches. Here is how my modification looks like.
open IN, 'sample.fa'|| die("Could not open file!"); open OUT, '>modsample.fa'|| die("Could not open file!"); while ($line = <IN>) {$nextline=<IN>; if ($nextline=~m/mamma/&&$line=~m/mia/) {print OUT "$line$nextline";} else {print ".";} }
Can you explain it to me? And maybe offer some suggestions how to actually accomplish my goal
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: What went wrong with this change in code?
by jwkrahn (Abbot) on Nov 10, 2011 at 11:20 UTC | |
by naturalsciences (Beadle) on Nov 10, 2011 at 11:32 UTC | |
|
Re: What went wrong with this change in code?
by moritz (Cardinal) on Nov 10, 2011 at 11:21 UTC | |
by naturalsciences (Beadle) on Nov 10, 2011 at 11:29 UTC |