我正在尝试使用seek
使用以下代码“回放”到文件的开头:
#! /usr/bin/perl
use strict;
use warnings;
my $infile = $ARGV[0];
open (FH, "<$infile");
while(<FH>) {
chomp;
print $_,"\n";
}
print "one time","\n";
seek FH, 0, 0;
while(<FH>) {
chomp;
print $_,"\n";
}
我的输入文件如下所示:
A A A A A A A
B B B B B B B
我使用以下命令运行我的程序:
cat file | perl script.pl /dev/stdin
但不是得到我预期的输出:
A A A A A A A
B B B B B B B
one time
A A A A A A A
B B B B B B B
我明白了:
A A A A A A A
B B B B B B B
one time
为什么?
答案 0 :(得分:3)
管道不可寻找,
seq 5 | perl -Mautodie -pe 'seek ARGV,0,0 if eof'
给出Can't seek('ARGV', '0', '0'): Illegal seek at -e line 1
,但是在文件的情况下它按预期工作。