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