#!/usr/bin/perl -w use strict; use Carp; (scalar @ARGV) || die "Usage: $0 file(s)\n"; foreach (@ARGV) { if (/\.tar\.gz$|\.tgz$/) { system "tar -zxvf $_"; error('tar') if ($? < 0); } elsif (/\.bz2$/) { system "tar -Ixvf $_"; error('tar') if ($? < 0); } elsif (/\.z$/i) { system "uncompress -dc | tar -xvf - "; error('uncompress') if ($? < 0); } elsif (/\.zip$/) { system "unzip $_"; error('unzip') if ($? < 0); } else { warn "Don't know what to do with $_, moving on\n"; } } sub error { my $call = shift; croak "Error calling $call - $!\n"; }