Я бы рекомендовал использовать для этой цели модуль Compress::Zlib
. Вы можете найти readme и код на github и установить его с zef install Compress::Zlib
.
Этот пример взят из файла теста № 3 с заголовком "wrap":
use Test;
use Compress::Zlib;
gzspurt("t/compressed.gz", "this\nis\na\ntest");
my $wrap = zwrap(open("t/compressed.gz"), :gzip);
is $wrap.get, "this\n", 'first line roundtrips';
is $wrap.get, "is\n", 'second line roundtrips';
is $wrap.get, "a\n", 'third line roundtrips';
is $wrap.get, "test", 'fourth line roundtrips';
Это, наверное, самый простой способ получить то, что вы хотите.