in reply to gzipping folder without tarring it first

gzip can only compress single files.

Maybe you want to use a different archive format, like .zip or .rar? Or maybe you want to send a tar archive of gzipped files, which might be slightly larger yet still pass that virus scanner?

Also note that you don't have to use open if all you want to do is run an external process. system allows you to run an external process, and backticks allow you to capture the output of a subprocess.

You can even archive and compress the folder in one go:

my $tgz = "$tar cf - $dir/* | gzip -9c"; open my $gzipped, "$tgz |" or die "Couldn't run [$tgz]: $!/$?"; binmode $gzipped; $/ = \4096; print while <$gzipped>;

Replies are listed 'Best First'.
Re^2: gzipping folder without tarring it first
by fastfox (Initiate) on May 06, 2010 at 14:57 UTC

    Sure, .zip would be okay too.

    I just tried a little, but I guess I got something wrong ...

    $zip = Archive::Zip->new() foreach my $membername (map {glob} $dir) { if (-d $membername) { $zip->addTree( $membername, $membername ); } else { $zip->addFile ($membername); } } $zip->writeToFileNamed($archive);

    It says that there's a syntax error near the foreach, but I don't get what it is :-(

      Missing semicolon?

      $zip = Archive::Zip->new() ......................................^

        Ooops ... you're right, that was the error.

        Thanks !