Что делает = ~ в Perl?

Я думаю, что тег является переменной, и он проверяет 9eaf - но существует ли он в Perl?

Что здесь делает знак "= ~" и что делают символы "/" до и после 9eaf?

if ($tag =~ /9eaf/)
{
    # Do something
}

Ответ 1

=~ - это оператор, проверяющий соответствие регулярного выражения. Выражение /9eaf/ является регулярным выражением (косые черты // являются разделителями, 9eaf является фактическим регулярным выражением). На словах в тесте говорится: "Если переменная $tag соответствует регулярному выражению /9eaf/...", и это совпадение происходит, если строка, хранящаяся в $tag, содержит символы 9eaf последовательно, по порядку, в любой точке, Таким образом, это будет верно для строк

9eaf

xyz9eaf

9eafxyz

xyz9eafxyz

и многие другие, но не строки

9eaxxx
9xexaxfx

и многие другие. Посмотрите 'perlre' man для получения дополнительной информации о регулярных выражениях или регулярном выражении perl google.

Ответ 2

Оператор '= ~' является оператором привязки , который указывает, что следующая операция будет искать или изменять скаляр слева.

Оператор по умолчанию (неуказанный) - 'm' для соответствия.

Оператор сопоставления имеет пару символов, которые обозначают, где начинается и заканчивается регулярное выражение. Чаще всего это "//'.

Дайте Perl Re учебник читать.

Ответ 3

Код проверяет, является ли 9eaf подстрокой значения $tag.


$tag =~ /9eaf/

не подходит для

$tag =~ m/9eaf/

где m// - оператор совпадения. Он соответствует шаблону регулярного выражения (regexp) 9eaf по отношению к значению, связанному с =~ (возвращается левой стороной =~).


Операторы, включая m// и =~, описаны в perlop.

Регулярные выражения (например, 9eaf) описаны в perlre, perlretut.

Ответ 4

Это проверяет соответствие скалярного $tag (предположительно, строки) для регулярного выражения /9eaf/, которое просто проверяет, является ли строка "9eaf" подстрокой $tag. Проверьте perldoc perlretut.