my %filename; while () { warn "No match for $_" unless m#^(\w+?\d+)#; $filename{$1}++; } print "$_\n" foreach sort keys %filename; __DATA__ smith_13_503_de7.p smith_13_502_de7.v jones_104_503_de7.p jones_104_502_de7.v