Это делает именно то, что должно быть.Согласно документации, предоставление ссылки на массив для вывода приведет к распаковке содержимого, а затем к отправке в предоставленный массив.
Возможно, что вы думали, что это должно сделать, это поместить строки несжатого вывода в ваш массив?Если вы хотите что-то подобное, сделайте:
gunzip $blah_gz => \ $a_scalar_var or die "blah...\n";
my @contents = split($/, $a_scalar_var);
Обратите внимание, что содержимое не будет содержать завершающую новую строку, поэтому вам не нужно chomp
каждую строку при ее обработке, но у вас будетиспользовать say
или делать что-то вроде print $_, "\n"
, когда вы собираетесь распечатать его.
Если у вас мало памяти, и вы не хотите хранить три копии своих данных, и $blah_gz
и $a_scalar_var
не собираются выпадать из области видимости (например, когда вы возвращаетесь из функции, выполняющей распаковку), вы можете добавить:
undef $blah_gs;
undef $a_scalar_var;
после того, как сгенерировано @contents
.