我想创建一个提取文件的perl脚本,然后在那里打开结果和剂量。我有这个代码:
$res = qx{tar -xvf $tmp -C /tmp/}; #$tmp was specified earlier
但我不知道如何查看创建了哪个新目录?
这可能不是最有效的方法,但我是Perl的新手并且不了解所有模块。
答案 0 :(得分:2)
一种选择是解析tar的输出,它会变得混乱,并且可以在tar版本之间进行更改。
或者您可以在空目录中解压缩。然后解压后目录中的任何内容都是来自tarball的内容。即使tarball是不礼貌的并且不创建目录,这也可以工作。
use File::Temp;
my $tempdir = File::Temp->newdir;
qx{tar -xvf $tarball -C $tempdir};
或者您也可以使用Archive::Tar或Archive::Extract列出档案中的文件。 Archive :: Extract具有作为各种存档格式的通用接口的好处。
use Archive::Extract;
my $ae = Archive::Extract->new( archive => $tarball );
my $files = $ae->files;
答案 1 :(得分:0)
您可以在解压缩tarball之前构建一个目录列表(使用readdir()),然后重新生成它,并推断出新列表中不在原始列表中的任何内容都来自tarball。