IO :: Uncompress :: Gunzip拒绝写入数组

时间:2011-06-27 16:56:18

标签: perl

我正在尝试使用IO :: Uncompress :: Gunzip模块。根据它的文档,我应该能够提供数组引用的输出变量,以便将结果推送到该数组(documentation here)。当我执行以下操作时:

my $blah = [];
gunzip $blah_gz => $blah or die("gunzip failed: $GunzipError\n");

Gunzip只是将包含文件所有行的单个标量推送到$ blah,基本上将其第一个elem作为标量引用。难道我做错了什么?这是一个错误吗?它是否需要行为?无论是什么,它都很烦人。

1 个答案:

答案 0 :(得分:2)

这正是它应该做的事情。根据文档,为输出提供数组引用将解压缩内容,然后将其推送到提供的数组。

也许您认为它应该做的是将未压缩输出的行放入您的数组中?如果你想要这样的话:

gunzip $blah_gz => \ $a_scalar_var  or die "blah...\n";
my @contents = split($/, $a_scalar_var);

请注意,内容不会包含尾随新行,因此您在处理时不需要chomp每行,但您必须使用say或执行类似{ {1}}当你去打印出来时。

如果您的内存不足,并且基本上不想保留三份数据副本,print $_, "\n"$blah_gz不会超出范围(例如,当您从执行解压缩的函数返回),您可以添加:

$a_scalar_var
生成undef $blah_gs; undef $a_scalar_var;