В Perl есть ли разница между / ^ / и / ^ / m? - PullRequest
2 голосов
/ 09 октября 2009

Документация для опции /m в perlre гласит:

Рассматривать строку как несколько строк. Тот изменить «^» и «$» из соответствующего начало или конец строки сопоставление начала или конца любой строки в любом месте строки.

Но этот пример, похоже, указывает на то, что /^/ и /^/m ведут себя одинаково. Что я недопонимаю?

use strict;
no warnings; # Ignore warning about implicit split to @_
my $x = " \n \n ";
print scalar(split /^/m, $x), scalar(split /$/m, $x), "\n";  # 33
print scalar(split /^/,  $x), scalar(split /$/,  $x), "\n";  # 31

1 Ответ

19 голосов
/ 09 октября 2009

Да, /^/ отличается от /^/m, но поскольку /^/ будет бесполезным при использовании с split, оно ( только для split * ) автоматически становится /^/m. Это задокументировано в perldoc -f split .

Это удивительный тип DWIM, который, вероятно, не был бы включен в perl, если бы нам пришлось делать это снова и снова.

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