代码之家  ›  专栏  ›  技术社区  ›  Paul Tomblin

用$var得到不同的结果!~ ?/?

  •  1
  • Paul Tomblin  · 技术社区  · 14 年前

    我正在分析一个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 每隔一次分支?

    1 回复  |  直到 14 年前
        1
  •  4
  •   muhmuhten    14 年前

    这与/pattern/search类似,只是它在对reset()运算符的调用之间只匹配一次。例如,当您希望在一组文件的每个文件中只看到某个文件的第一次出现时,这是一个有用的优化。只是??当前包的本地模式被重置。

    只是使用 /\// m!/! 或者类似的东西。 ?? 有一些通常是坏主意的魔法。