使用perl的Untar tar.gz文件

时间:2013-04-30 08:27:01

标签: xml perl tar

我有一个tar.gz文件里面有一个巨大的XML ..我需要在perl中使用Archive :: tar提取文件...我使用下面的代码只提取压缩文件来自tar.gz文件的XML文件..但我需要一步提取XML ... 我使用以下代码......

 TAR__PATH= 'C:\\Perl\IN\Work\tar_file_20130426.xml.tar
 my $extract_obj = Archive::Extract->new(archive => $TAR_FILE_WORK_PATH, type => 'tar');

3 个答案:

答案 0 :(得分:1)

你可能想要一个系统调用(阻止直到完成并提供结果的反引号)到tar,因为Archive :: Tar将整个存档加载到内存中

的内容
my $ret = `tar zxf $TAR_FILE_WORK_PATH`;

然后检查$ ret是否成功。

您可以使用-v(详细)选项获取更多输出以检入$ ret

大多数tar命令都有-C选项可以提取到指定的目录,这也很有用。

答案 1 :(得分:0)

使用以下代码;

use Archive::Tar;

my $tar=Archive::Tar->new();

$tar->read('/path/of/tar/test.tar.gz');
$tar->extract();

它将提取当前路径中的内容。希望,它会奏效。

答案 2 :(得分:0)

如果.xml放入tar.gz这是使用Archive::Extract的另一个实现。以单线形式

perl -MArchive::Extract -e "Archive::Extract->new( archive => 'src/PPM-2.50_01.tar.gz' )->extract()"

以来源形式:

use Archive::Extract;

Archive::Extract->new( archive => 'src/PPM-2.50_01.tar.gz' )->extract();