内的两个字符串匹配的第一个例子,我希望要问什么最简单的方法找到一个while循环中几个不同的字符串的第一个实例。我正在寻找两个字符串的日志,字符串的顺序不是必需的,可以随时发生。不过,偶尔也有相同的字符串进一步下跌的日志(一审)之后的又一实例,所以我希望能只收集两个字符串的第一个实例,并收集必要的时间戳。该代码我有多远......Perl中while循环
while(<$log_DUT>) {
$fh_DUT->print($_);
if (m/<\sOPERATOR\s\{[^,]+,\s[^,]+,\s\d+\}\s\[SUB0\]/){
$dsub1found = 1;
open (DUTfFILE, ">>", "$TimeDutfsub1");
print DUTfFILE DUTcurTime(),"\n";
close (DUTfFILE);
}
if (m/<\sOPERATOR\s\{[^,]+,\s[^,]+,\s\d+\}\s\[SUB1\]/){
$dsub2found = 1;
open (DUTfFILE, ">>", "$TimeDutfsub2");
print DUTfFILE DUTcurTime(),"\n";
close (DUTfFILE);
}
last if ($dsub1found & $dsub2found == 1);
}
脚本工程确定,并成功捕获时间戳,当它正确的字符串(正则表达式)触发相匹配,但它继续捕捉相同的字符串的进一步实例应的循环仍然需要等待第二个正则表达式字符串(反之亦然)。
我开始if语句(例如),如果$ dsub1found!= 1,但没有运气,字符串永远找不到,我的脚本超时。
其他担心,我不得不为它是否是明智的做一对夫妇的字符串搜索在同一个while循环。
感谢您阅读此, MikG
谢谢池上,这看起来是我以后的事情。重复仅仅是因为我是一名Perl初学者,但最终通过练习,我希望将来能够缩短我的脚本以提高效率。但事实证明,我现在对重复性格式的理解更为清晰。我尝试了你的简短脚本,但是它在'$ TimeDutfsub $ n'处摔倒了,'$ TimeDutfsub'需要定义 – MikG
Re“重复纯粹是由于我是一个Perl初学者”,对不起,我的意思是修辞。我可以这样说:“但是消除所有这些重复会很容易, – ikegami
Re'$ TimeDutfsub',我没有注意到前面的'$',我以为你创建了名为'TimeDutfsub1'和'TimeDutfsub2'的文件。必须使用一个数组'my @TimeDutfsub =(...,...);'并使用'$ TimeDutfsub [$ n]'(更新答案以使用数组)。 – ikegami