Följande perl-program tar filer som komprimerats i andra format (.tar.gz, .tgz, .tar.Z och .Z för denna gång) och packar om dem med bättre komprimering. Perl-koden har alla typer av trevlig dokumentation om vad den gör och hur den gör det den gör.
#!/usr/bin/perl -w ####################################################### # # # Detta program tar packade och gzippade program i # # i den aktuella katalogen och gör om dem till bzip2- # # format. Det klarar av .tgz-ändelsen på ett hyffsat # # sätt och skapar en .tar.bz2-fil. # # # ####################################################### $counter = 0; $saved_bytes = 0; $totals_file = '/tmp/machine_bzip2_total'; $machine_bzip2_total = 0; @files = <*[Zz]>; $total = scalar(@files); foreach (@files) { if (/tgz$/) { ($new=$_) =~ s/tgz$/tar.bz2/; } else { ($new=$_) =~ s/\.g?z$/.bz2/i; } $orig_size = (stat $_)[7]; ++$counter; print "Packar om $_ ($counter/$total)...\n"; if ((system "gzip -cd $_ |bzip2 >$new") == 0) { $new_size = (stat $new)[7]; $factor = int(100*$new_size/$orig_size+.5); $saved_bytes += $orig_size-$new_size; print "$new är ungefär $factor% av storleken på $_. :",($factor<100)?')':'(',"\n"; unlink $_; } else { print "Arrgghh! Något hände med $_: $!\n"; } } print "Du har ", ($saved_bytes>=0)?"sparat":"förlorat", " $saved_bytes byte lagringsutrymme :", ($saved_bytes>=0)?")":"(", "\n"; unless (-e '/tmp/machine_bzip2_total') { system ('echo "0" >/tmp/machine_bzip2_total'); system ('chmod', '0666', '/tmp/machine_bzip2_total'); } chomp($machine_bzip2_total = `cat $totals_file`); open TOTAL, ">$totals_file" or die "Kan inte öppna systemvid totalitet: $!"; $machine_bzip2_total += $saved_bytes; print TOTAL $machine_bzip2_total; close TOTAL; print "Maskinvid totalitet av ",`cat $totals_file`," byte sparade.\n";