my $marker = qr/^\s* NP \s+ U \s+ Pu \s* $/x; my $columns = qr/^\s* (\d+) \s+ (\d+) \s+ (\d+) \s* $/x; my $found; while (<>) { # looking for markers if (not $found) { $found = 1 if ($marker); } # found markers, get columns else { my ($NP, $U, $Pu); if ( ($NP, $U, $Pu) = /$columns/ ) { do_something_with( $NP, $U, $Pu); } else { warn "Didn't see columns, "; } # reset to look for more markers $found = 0; } } #### $found = 0;