http://qs321.pair.com?node_id=1065607


in reply to Iterating through file to find specific subsets of lines

my $dipped=0; my $column; foreach ... ... if ($score < 50) { $dipped= $columns[0] if (not $dipped); } else { print "$dipped $column\n" if ($dipped); $dipped=0; } $column= $column[0]; } print "$dipped $column\n" if ($dipped);

Untested. $dipped is the variable that stores the first score that dips under 50 in a "dip region" and it also signifies that you are in such a region by being not 0. The construct with $column is necessary to get the number on the last line out of the foreach loop if a dipped region lasts until the end, could be avoided by declaring @columns outside the loop.

UPDATE: Removed the off-by-one error found by toolic, using $column to store $column[0] of the previous loop step

Replies are listed 'Best First'.
Re^2: Iterating through file to find specific subsets of lines
by toolic (Bishop) on Dec 04, 2013 at 15:37 UTC
    Using your scalar would be more efficient than my array solution... if you could get rid of your off-by-1 error (tested).