Как использовать другие разделители в разделении Perl? - PullRequest
0 голосов
/ 01 февраля 2012

Я могу использовать m!PATTERN!, если PATTERN содержит / символов.

Могу ли я использовать этот способ также в split /PATTERN/,EXPR,LIMIT?

Ответы [ 3 ]

6 голосов
/ 01 февраля 2012

Короче говоря, ответ - да.

Попробуйте:

my @array = split m!/!, '1/2/3/4/5';
4 голосов
/ 01 февраля 2012

Различные формы split действительно:

  • split MATCHOP,EXPR,LIMIT
  • split PATTERN,EXPR,LIMIT
  • split MATCHOP,EXPR
  • split PATTERN,EXPR
  • split MATCHOP
  • split PATTERN
  • split

Где

  • MATCHOP - оператор сопоставления (который не выполняется, как обычно), а
  • PATTERN - это выражение, которое возвращает одно из следующих:
    • Строка, состоящая из одного пробела.
    • Скомпилированный шаблон регулярных выражений
    • Шаблон регулярного выражения в виде строки

Все десять из них функционально эквивалентны:

$re = qr/\s+/;
$pat = '(?^u:\\s+)';

split /\s+/          Match operator
split m/\s+/         Match operator
split m!\s+!         Match operator

split qr/\s+/        Expression that returns a compiled regex pattern.
split qr!\s+!        Expression that returns a compiled regex pattern.
split $re            Expression that returns a compiled regex pattern.

split '(?^u:\s+)'    Expression that returns a stringified regex pattern.
split '(?^u:\\s+)'   Expression that returns a stringified regex pattern.
split "(?^u:\\s+)"   Expression that returns a stringified regex pattern.
split $pat           Expression that returns a stringified regex pattern.
1 голос
/ 01 февраля 2012

Не знаю о m!PATTERN! ... вы можете использовать 'Pattern' .. то есть разделить ('', EXPR, LIMIT)

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