use strict; use warnings; use diagnostics; use populate; use Archive::Zip; my($store_path); my(@pictures, $picture); my($cumulative, $size); $store_path = './store'; @pictures = populate($store_path); foreach $picture (@pictures) { $size = (stat($picture))[7]; $cumulative += $size; } &make_barn(@pictures) if ($cumulative >= 5000000); sub make_barn { my($barns_path); my(@pictures, $picture); my($barn_number, @barns); my($barn, $member); @pictures = shift(); # broken $barns_path = './barns'; $barn = Archive::Zip->new(); foreach $picture (shift()) { $member = $barn->addFile($picture); $member->desiredCompressionLevel(9); print "Added $picture\n"; } @barns = populate($barns_path); ($barn_number) = $barns[0] =~ /barn_(.+)\.zip$/; $barn_number++; $barn->writeToFileNamed($barns_path.'/barn_'.$barn_number.'.zip'); }