【发布时间】:2010-10-30 17:24:36
【问题描述】:
我正在读取和处理来自 Perl 中的 ARGV 文件句柄(即 的输入流,这是一个常规文件句柄,可能是 STDIN。但是,我需要分析输入的重要部分,以便检测它以四种不同但极其相似的格式中的哪一种进行编码(FASTQ 质量分数的不同 ASCII 编码;请参阅here)。一旦我确定了数据的格式,我需要返回并再次解析这些行以实际读取数据。while(<>) 构造)
所以我需要读取流的前 500 行左右两次。或者,换个角度来看,我需要阅读前 500 行,然后将它们“放回去”,这样我才能再次阅读它们。由于我可能正在阅读 STDIN,因此我不能只是回到开头。而且文件很大,所以我不能将所有内容都读入内存(尽管将前 500 行读入内存是可以的)。最好的方法是什么?
或者,我可以以某种方式复制输入流吗?
编辑:等一下。我刚刚意识到我不能再将输入作为一个大流处理,因为我必须独立检测每个文件的格式。所以我不能使用 ARGV。不过,剩下的问题仍然存在。
【问题讨论】:
标签: perl stdin duplication