#! perl -sw use strict; my %files; while() { chomp; my ($type, $ts) = m/(..)(.*)/; $files{$type} = [] if not exists $files{$type}; push @{$files{$type}}, $ts; } foreach my $type (keys %files) { print $type,$_,$/ for sort @{$files{$type}}; } __DATA__ vs010101.000 ud010101.000 ve020202.000 eq131302.000 eq010101.000 vs031102.000 us020101.000 ve051001.000