【发布时间】:2021-01-19 03:28:46
【问题描述】:
我试过这段代码。
代码:
use strict;
use warnings;
use Fcntl qw(SEEK_SET SEEK_CUR SEEK_END);
open($file1) # I didn't put full line
open (F_log)
while (my $line = <$file1>) {
my @fields = split " ", $line;
my $length = @fields;
for (my $i=3; $i<5 ;$i+="1") {
$i_d = $fields[$i];
last if ($.==1);
seek F_log, 0, SEEK_SET; # not working
while(my $LINE = (<F_log>)) {
if ($. >= $a ) {
if ($LINE =~ /^\s+(\w+)\s\s"(\w+)",/) {
if ($1 eq $i_d) {
$fields[$i] = $2;
last;
}
else
{
$fields[$i] = "Error:$i_d";
};
};
};
};
};
}
close
close
我想在每次循环增量时阅读整个<F_log>。我尝试了在while循环中打开/关闭文件的其他方法,它可以工作,但我认为这会增加脚本的运行时内存(不确定)。所以现在我试图将指针重置为开始但它不起作用。任何人都可以提出任何建议吗?而且,如果有人告诉所有事情会增加脚本的运行时内存。谢谢你
【问题讨论】:
-
你得到什么错误? (
seek(F_log,0,SEEK_SET) or die("seek: $!\n");) -
很可能
open (F_log)没用。您需要检查所有文件功能是否正常工作。见stackoverflow.com/questions/3203860/… -
您的代码无法编译。请发个more complete example好吗?