# Untested... use File::Basename; use File::ReadBackwards; tie *FH, 'ReadBackwards', 'filename' or die $!; my $found; while( ) { chomp; next unless basename($_) =~ m/^(\d+)$/; $found = $1; last; } die "No matches found.\n" unless defined $found; print $found;