open my $fh, 'uuu.txt'; open my $gh, '| bzip2 -9 -c > /tmp/uuu.txt.bz2'; # or gzip if no bzip2 while (<$fh>) { s/\s+//g; print $gh $_ or suffer(); } close $fh; close $gh or suffer(); system 'bunzip2 -c /tmp/uuu.txt.bz2 > uuu.txt'; unlink '/tmp/uuu.txt.bz2'; sub suffer { warn "$!: /tmp/uuu.txt.bz2\n"; # e.g. $! reports disk full unlink '/tmp/uuu.txt.bz2'; exit 256; }