Эти символы являются «утверждениями с нулевой шириной». Они не выдерживают никакой группы символов, но позиций в строке.
^
означает, что я ожидаю этот шаблон в начале строки или записи.
$
означает, что я ожидал этот шаблон в конце строки или записи
В стандартном режиме согласования (без закрывающего переключателя /m
), Perl рассматривает только первую запись в виде строке как общий поиск пространства. С помощью переключателя /m
Perl рассматривает все записи в строке, где каждая запись делится на текущее значение $/
(также $RS
с use
English
qw($RS);
).
Итак, если вы просматриваете пару записей, и знаете, что шаблон происходит в начале или конце, вы можете использовать эти символы, чтобы указать это. (Абсолютное начало строки всегда \A
и абсолютный конец \Z
за место перед разделителем записей, который заканчивается всей строкой или \z
для места после каждого отдельного символа в строке. Perl Best Practices предпочитает равномерное использование \z
.)
Для уточнения, стандарт запись представляет собой строку ввода, разделенную разделителем строк системы.
Чтобы ответить на ваш конкретный вопрос: условие будет истинным, если первая запись в строке в $keyword
точно соответствует 'verse'
. Для строк, которые не должны содержать ничего, кроме этого, вы также можете использовать
if ($keyword eq 'verse') {
...
}
Эти символы определены в разделе Модификаторы perlre (1). http://perldoc.perl.org/perlre.html # Модификаторы –
@CodeGnome - Нет, они не являются (потому что они не являются модификаторами) – Quentin
@Quentin '[C] hange«^»и« $ »от соответствия началу или концу строки для соответствия началу или конец любой строки в любом месте строки. »звучит как определение для меня. Не стесняйтесь добавлять свои собственные конструктивные ссылки. –