我有一个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');
答案 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();