You are in a loop, so $dnaString is being added to everytime the line doesn't match your start pattern. $dnaString is always one step behind @seqList so when you come to the next start line, it pushes the previous $dnaString onto @sequences, then clears it for the next iteration. Best thing to do is try it: set $count = 1 and see what happens.
Update: after re-reading this I'm a bit confused myself. Better to put a print statement within the loop:
my $dnaString = '';
...
if ($line=~/^>(\S+)/){
print qq|Count: $count, Match: $1, String: $dnaString\n|;
push (@seqList, $1);
| [reply] [d/l] |
uggg still not getting it. No errors but the elements I printed were all the same. I'll keep working, thanks for explaining!
| [reply] |
A HASH makes more sense for this structure:
my ($k,$v, %seq);
for my $line (<DATA>) {
chomp ($line);
if ( $line=~/^>(\S+)\s*(.*)/){
$k=$1;
$v=$2;
}else{
$v=$line;
}
$seq{$k} .= $v;
}
#---- Print it ----
for my $k(sort keys %seq){
print "$k \t=> $seq{$k}\n";
}
# --- Output ---(Using the __DATA__ block above) ..-
# 123 => blahabcdefghijkl
# 456 => de dahmnopqr
# 789 => nothing wanted herestuvwxyz
All great truths begin as blasphemies.
― George Bernard Shaw, writer, Nobel laureate (1856-1950)
| [reply] [d/l] |
but the elements I printed were all the same
Can you post some sample data?
| [reply] |
Oh it works! It seemed important that the variables were my variables? Thank you soooo much!!
| [reply] |
Yeah here's the file http://www.med.nyu.edu/rcr/rcr/course/smutans.fas
| [reply] |