in reply to Grouping files with the same name...

If you are sure that you will be receiving one ".xml" file for all the customers then
1. Read list of unique customers.
@xmlFileNames=grep !/^\.\.?$/ && /\.xml$/,readdir(DIR); The number of xml you get is the number of total customers.

2. Loop through each customer and create zip.
foreach my $customer (@xmlFileNames) { $customer =~ s/\.xml//g; system ("/usr/local/bin/unzip ${customer}.zip ${customer}.xml ${ +customer}.pdf ${customer}.xls"); }