我正在解析一个XML文件,在提取了一些信息之后,我想看看某个特定字段中是否有一个'/'(斜杠)。所以我做了以下代码:
if (defined($orgUIDLookup{$orgUidMid}))
{
my $country = $orgUIDLookup{$orgUidMid};
print "country = $country ";
if ($country !~ ?/?)
{
print "OK\n";
$airportRef{country} = $country;
}
else
{
print "no good\n";
$needHelp = 1;
}
}
但是我似乎得到了带有斜杠的节点的不一致结果:
grep '^country = .*/' foo
country = CN/MA/RE no good
country = CN/MA/RE OK
country = CN/MA/RE OK
country = CN/MA/RE OK
country = RB/MJ OK
country = RB/MJ OK
country = RB/MJ OK
country = CN/MA/RE OK
country = CN/MA/RE OK
country = RB/MJ OK
country = RB/MJ OK
country = CN/MA/RE OK
country = CN/MA/RE OK
country = RB/MJ OK
country = RB/MJ OK
country = KR/TV OK
country = KR/TV OK
country = KR/TV OK
country = WS/AQ OK
country = AA/NT OK
country = AA/NT OK
country = AA/NT OK
country = AA/NT OK
country = AA/NT OK
country = AA/NT OK
为什么第一次这个测试会通过else
分支,但是每隔一段时间就通过if
分支?
答案 0 :(得分:4)
这与/ pattern / search类似,只是它在调用reset()运算符之间只匹配一次。例如,当您只想查看一组文件的每个文件中第一次出现的内容时,这是一个非常有用的优化。只要 ??当前包的本地模式被重置。
只需使用/\//
或m!/!
或类似的东西。 ??
有一些与之相关的通常不好主意的魔法。