【发布时间】:2013-08-07 16:32:50
【问题描述】:
在我的 perl 脚本中,我打开了一个文件并搜索了一个字符串。它是成功的。但是当我在该搜索之后再次搜索相同的字符串时,脚本似乎从它所在的位置开始搜索直到文件末尾,因此它无法再找到匹配项。我的代码是这样的:
open ( INFILE, "./input.txt")
for($i=0; $i < 3; $i++){
print "i = $i\n";
$found = 0;
while (! $found && ($line = <INFILE>)){
if ( $line =~ /string/ ){
print "found!\n";
$found = 1;
}
else{
print "not found!\n";
}
}
}
close (INFILE);
input.txt 文件:
string
random2
random2
我期待的输出是:
i = 0
found!
i = 1
found!
i = 2
found!
但事实证明:
i = 0
found!
i = 1
not found!
not found!
i = 2
谁能帮我解决这个问题。我刚开始学习 perl。
【问题讨论】:
-
您为什么希望该代码打印“找到!”
string何时只匹配文件的第一行? -
@kjprice:你编辑掉了代码中的一个错误。
-
@toolic,哇,我以为编译不出来……只是认为这是一个错字。
-
@kjprice:由于我在代码中使用了“for”循环,因此我期望在每次迭代中,它将从输入文件的开头重新开始并找到匹配项。不正确吗?