当输入文件是.gz文件时,有没有任何方法可以在perl中使用seek函数



我一直在尝试在输入文件为.gz格式的Perl脚本中使用seek函数。我使用以下一组命令打开了文件

if ($ARGV[0] =~ /.gz$/) {
open (FH1, "gunzip -c $ARGV[0] |") || die ("cant open file");
}
else {open (FH1, "<$ARGV[0]") || die ("cannot open file");
}

当搜索函数用于普通文本文件时,它工作正常,如果将.gz文件作为输入,则搜索函数工作不正常。

在这种情况下,除了在使用的任何位置关闭和打开文件之外,是否有其他搜索功能可供选择

核心IO::Uncompress::Gunzip模块在用于读取gzip文件时对seek的支持有限(而不是像现在这样使用外部程序(:

提供查找功能的子集,但有一个限制,即只有在输入文件/缓冲区中向前查找才是合法的。试图向后寻找是一个致命的错误。

请注意,此模块中查找的实现不会提供对压缩文件/缓冲区的真正随机访问。它的工作方式是从文件/缓冲区中的当前偏移量解压缩数据,直到达到要查找的参数中指定的未压缩偏移量。对于非常小的文件,这可能是可以接受的行为。对于大文件,可能会造成无法接受的延迟。

最新更新