use Archive::Tar; # using the cli utility compress # -c causes the file to be 'cat'ed open F, "uncompress -c $filename |"; # or use # open F, "zcat -c $filename |"; my $tar = Archive::Tar->new(*F);