use strict; use Archive::Tar; my ($dirname,$file); $dirname = "path_to_dir"; opendir(DIR,$dirname) or die "unable to open $dirname : $|"; while(defined($file = readdir(DIR))){ my $tar = Archive::Tar->new(); $tar->read("$file", 1); my @tar_files = $tar->list_files(); $tar->extract(@tar_files); } closedir(DIR);