open my $fh, "< $file" ; my $max_id = 0 ; while (<$fh>) { if ($_ =~ /^foo|(\d+)|bar$/) { $max_id = $1 if $max_id < $1 ; } } my $next_id = $max_id + 1 ;