我基本上想为 gzip 创建一个文件句柄,并使用它来匹配字符串,就像我处理任何其他文件一样。我需要比较两个 gzip 文件中的行,但它们每个都是 15 GB。我使用 Archive::Extract 和 File::temp 来阅读它们,但我的硬盘已满。
最佳答案
您可以将 gzip -dc
通过管道传输到文件句柄中,如下所示:
open(my $fh1, '-|', '/usr/bin/gzip -dc filename1.gz') or die $!;
open(my $fh2, '-|', '/usr/bin/gzip -dc filename2.gz') or die $!;
它应该缓冲 gzip 的输出,而不是使用磁盘上的空间。
PerlIO::gzip
不会解压缩整个文件,而是在读取到您的句柄时解压缩,因此您也可以使用它。
关于perl - 使用perl,有没有办法打开gzip文件并读取行而不完全解压缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34232328/