寻求功能不在perl中工作

时间:2014-12-31 09:43:24

标签: perl file-handling

我尝试了以下代码段,搜索功能似乎无法正常工作。

funct("ls -ltr /scratch/dummy/dum*");

sub funct {

print "\nRecording\n";
open(SENSOR_LIST1, "$_[0] |") || die "Failed to read sensor list: $!\n";
for $sensor_line1 (<SENSOR_LIST1>) {
   print "$sensor_line1";
}
my $pos = tell SENSOR_LIST1;
print "\nposition is $pos"; #Here the position is 613

print "\nRecording again";
seek (SENSOR_LIST1, SEEK_SET, 0);
$pos = tell SENSOR_LIST1; # Here again the position is 613, even after a seek
print "\nposition now is $pos";

for $sensor_line1 (<SENSOR_LIST1>) {
        print "$sensor_line1";
    }
close SENSOR_LIST1;
}

注意:寻求的所有变体都不起作用。

输出:

即使在寻求之后,该位置也不会改变。它仍然在613年。

你们可以检查并告诉我这里的问题是什么?

感谢。

2 个答案:

答案 0 :(得分:6)

你不能在管道上寻找。

使用临时文件或将数据存储在内存中。

您选择最佳解决方案

答案 1 :(得分:1)

尝试将ls命令的输出写入文件并打开该文件,而不是直接读取命令的输出。对于瞬态数据流(例如命令的输出),seek不能只读取在读取后仍然存在的数据(例如文件)。