Оператор привязки =~

Переменная $_ всего лишь используется по умолчанию; оператор привязки =~ приказывает Perl применить шаблон в правой части к строке в левой части (вместо переменной $_1). Пример:

my $some_other = "I dream of betty rubble.";
if ($some_other =~ /\brub/) {
print "Aye, there's the rub.\n";
}

На первый взгляд оператор привязки может показаться некой разновидностью оператора присваивания. Ничего подобного! Он просто говорит: «Операция поиска совпадения, которая по умолчанию должна быть связана с $_, должна применяться к строке в левой части». Если оператор привязки отсутствует, по умолчанию выражение использует $_. В (несколько необычном) примере, приведенном ниже, переменной $likes_perl присваивается логическое значение в зависимости от того, какие данные были введены пользователем. Программа немного отдает стилем программирования «на скорую руку», потому что сама строка ввода при этом теряется. Программа читает строку ввода, проверяет ее по шаблону и отбрасывает ее. Переменная $_ не используется и не изменяется.

print "Do you like Perl? ";
my $likes_perl = ( =~ /\byes\b/i);
... # Проходит время...
if ($likes_perl) {
print "You said earlier that you like Perl, so...\n";
...
}

Так как оператор привязки обладает довольно высоким приоритетом, круглые скобки вокруг выражения проверки не обязательны, а следующая строка делает то же, что и приведенная выше, – сохраняет результат проверки (но не строку ввода) в переменной:

my $likes_perl = =~ /\byes\b/i;

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
Автоматические переменные совпадения
Границы слов
Добавление пропусков (/x)
Другие модификаторы
Жизненный цикл переменных частичных совпадений