my %file = ( name => 'name', date => '0000-00-00' ); my $dir = 'somedir'; opendir DIR, $dir or die "Cannot open '$dir' $!"; while ( my $file = readdir DIR ) { next unless $file =~ /(\d{4}-\d\d-\d\d)\.txt$/; if ( $1 gt $file{ date } ) { @file{ 'name', 'date' } = ( $file, $1 ); } } closedir DIR; print "Oldest file is $file{name}.\n" if $file{ date } ne '0000-00-00';