my %latest; for (sort ) { # by date my ($date, $path) = split "/", $_, 2; # assuming these are complete paths $latest{$path} = $_; # newer overwrites older } # output ordered by "path" values print $latest{$_} for sort keys %latest;