#!/usr/bin/perl # http://perlmonks.org/?node_id=1192943 use strict; use warnings; my %names; /(.*)\.(.*)/ and $names{$1}[$2] = $_ while ; print $names{$_}[-1] for sort keys %names; __DATA__ file.001 file.003 file.002 one.004 two.001 two.003 one.002 one.001 two.002