in reply to Recieving lists as arguments

It's not clear what you're doing with both @pictures and $picture. You should remove the line that is marked broken, and change the loop over the pictures to:

sub make_barn { my($barns_path); my($picture); my($barn_number, @barns); my($barn, $member); $barns_path = './barns'; $barn = Archive::Zip->new(); foreach $picture (@_) { $member = $barn->addFile($picture); $member->desiredCompressionLevel(9); print "Added $picture\n"; }

And you've made a very good decision to use Archive::Zip :-)