... # this assumes all files in the same dir opendir HANDLE, "the_dir" or die "couldnt opendir the_dir for reading $!"; my @files = readdir HANDLE; closedir(HANDLE); my $most_recent = (sort my_filename_sorter @files)[-1] ... sub my_filename_sorter { (my $a_date = $a) =~ s/\.txt$//; (my $b_date = $b) =~ s/\.txt$//; return $a_date <=> $b_date; }