使用 perl 提取 tar.gz 文件时内存不足
Posted
技术标签:
【中文标题】使用 perl 提取 tar.gz 文件时内存不足【英文标题】:Out Of Memory while extracting tar.gz file using perl 【发布时间】:2013-05-07 05:43:10 【问题描述】:我有一个大约 60 MB 的 tar.gz 文件,该文件里面有一个 XML 文件...在提取文件时我得到 Out Of Memory! 错误。 .. 下面是我用来提取文件的代码......
use strict;
use warnings;
use Archive::Extract;
$TAR_FILE_PATH = 'C:/Perl/IN/test_sample.tar.gz';
$WPARK_DIR = 'C:/Srinivas/Perl/WORK';
my $extract_obj = Archive::Extract->new(archive => $TAR_FILE_PATH, type => 'tgz');
$extract_obj->extract(to => $WORK_DIR);
在将 tar.gz 文件提取到 WORK_DIR 时,它在最后一行失败。有人可以建议一种最好的方法来处理这个问题并在 tar.gz 文件中提取巨大的 XML 文件..
【问题讨论】:
tar.gz 文件中的 XML 文件大小约为 800 MB .... 谁能帮我摆脱这个错误!!! 【参考方案1】:Archive::Extract 模块可以使用纯 perl 解决方案或回退到系统调用。您可以设置 PREFER_BIN 以强制它使用内存占用较少的系统调用。
http://perldoc.perl.org/Archive/Extract.html#Supporting-Very-Large-Files
【讨论】:
以上是关于使用 perl 提取 tar.gz 文件时内存不足的主要内容,如果未能解决你的问题,请参考以下文章
从 Ant tar 任务打包的 .tar.gz 中提取时包含非拉丁字符的文件名的编码