Получение разных результатов с $ var! ~? /? - PullRequest
1 голос
/ 18 октября 2010

Я анализирую 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 Ответ

4 голосов
/ 18 октября 2010

Это похоже на / pattern / search, за исключением того, что оно совпадает только один раз между вызовами оператора reset ().Это полезная оптимизация, когда вы хотите видеть только первое вхождение чего-либо в каждом файле набора файлов, например.Только ??шаблоны, локальные для текущего пакета, сбрасываются.

просто используйте /\// или m!/! или что-то в этом роде.У ?? есть какая-то магия, обычно плохая, связанная с ней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...