Xml 使用perl卸载tar.gz文件

Xml 使用perl卸载tar.gz文件,xml,perl,tar,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_PA

我有一个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');
使用下面的代码

use Archive::Tar;

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

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

它将提取当前路径中的内容。希望它能起作用。

您可能希望通过一个系统调用(当它阻塞直到完成并给出结果时,返回勾号)来tar as Archive::tar将整个归档加载到内存中

类似于

my $ret = `tar zxf $TAR_FILE_WORK_PATH`;
然后检查$ret是否成功

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


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

如果是
.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();

隐马尔可夫模型。。您想“使用”
Archive::Tar
,但您的代码段使用了
Archive::Extract
。您的代码段不是有效的perl。您的意思是提取了tarred XML文件吗?在tar.gz中有一个压缩的XML文件是另外一回事,这是非常不寻常的。也可以在不首先提取文件的情况下读取该文件。您需要在
tar.gz
中读取文件,还是需要将其放在磁盘上?编辑您的问题以澄清。感谢您的更新。。我使用的是Archive::Tar,但由于我试图解压缩一个Tar.gz文件,该文件的大小非常大,因此会抛出“内存不足”消息。。你知道怎么走出这个错误吗。。。