my $finder_type1 = File::Find::Rule->new()->name(qr/Type1_(.*?)\.xml$/i)->start("."); while( my $file1 = $finder_type1->match() ){ $type1->addFile($file1); } my $finder_type2 = File::Find::Rule->new()->name(qr/Type2_(.*?)\.xml$/i)->start("."); while( my $file2 = $finder_type2->match() ){ $type2->addFile($file2); } etc...