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
In reply to What went wrong with this change in code? by naturalsciences
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |