Большинство операторов, подобных кавычкам может принимать почти все что угодно для разделителей. † qr не является исключением, здесь используется !
в качестве разделителя.Он также оценивает ("интерполирует") переменные в кавычках.Таким образом, эта строка кода создает шаблон регулярного выражения, используя переменную $my_string
.Этот шаблон предположительно используется позже в коде в выражениях регулярных выражений.Это нормальное использование.
Полный пример:
use warnings;
use strict;
use feature 'say';
my $str = q(hey);
my $re = qr!$str!;
my $tgt = q(A_hey_C);
$tgt =~ s/$re/B/;
say $tgt; #--> A_B_C
Цель qr
специально состоит в том, чтобы построить шаблон регулярного выражения, поэтому можно ожидать, что $str
выше ($my_string
в вопросе), или шаблон в qr
, будет содержать специфичные для регулярных выражений шаблоны, возможно, наряду с другими переменными, собранными в программе.Выше $str
с простой строкой можно использовать непосредственно в регулярном выражении, так что это нереальный пример.
† См. Что такоеюридические разделители для операторов Perl 5 «выбери себе цитаты»?