1.匹配从行首开始一定要加上^。
例如
匹配
Frame No.
正确为
$var =~ m/^/s*Frame/s+No/./s*/
若不加^则,可能匹配到
The status of Frame No. is
2.程序中要用到循环
for (my $i = 0;$i <@$lines;$i++)
{
if($lines->[$i] =~ m/^/s*(/d+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+)/s*/)
{
for (my $j = 2;$j <= 33;$j++)
{
no strict 'refs';
if($$j ne "N")
{
$counter++;
if($counter eq 1)
{
$fault_flag = 1;
WriteTitle;
WriteCommand($line1);
}
my $k = $j - 2;
print $wfd_fault "槽位号:$1,$k异常/n";
}
}
use strict 'refs';
}
}
我在写了第一个循环后,发现还需要用一个,于是习惯性的又写了一个$i ,这样跟上轮循环的 $i重复了,自然就得不到想要的结果了