Есть ли разница между // и m //? - PullRequest
5 голосов
/ 10 ноября 2010

Я новичок в Perl, так что, возможно, это очень глупый вопрос, но я не смог выяснить: (

Если у меня есть:

$stringA =~ /regex/;
$stringB =~ m/regex/;

Из моего теста $stringA = $stringB. Есть ли разница между ними?

Спасибо.

Ответы [ 3 ]

9 голосов
/ 10 ноября 2010

Это сокращение. Вы можете опустить m при использовании разделителей //. Обратите внимание, что вы также можете использовать другие символы для разделения, например !, но тогда вам нужно использовать m:

 if ($something =~ m!//this/has/a/ton/of//characters/in/it!)

Часто это лучше делать, так как это экономит на написании \/\/ снова и снова, что вам нужно сделать, если вы используете //.

7 голосов
/ 10 ноября 2010

m/PATTERN/ и /PATTERN/ одинаковы.

См. эту часть справочной страницы perlop (операторы perl).Прокрутите вниз до раздела на m/PATTERN/, вы увидите, что он также известен как /PATTERN/

0 голосов
/ 10 ноября 2010

Они одинаковы.

Оператор матча. Перед разделителем открытия, это оператор «матч». Это означает прочитать строковое выражение слева от = ~ и посмотреть, соответствует ли какая-либо его часть выражению внутри разделителей после m. Обратите внимание, что если разделителями являются косые черты (что является нормальным состоянием дел), m является необязательным и часто не включается. Будь он там или нет, это все равно операция совпадения.

Источник

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