Редактировать: Этот ответ неправильный (или, по крайней мере, ошибочный), но в комментариях есть интересная дискуссия, которую стоит сохранить. Ответ Джона Сиракузы , кажется, на правильном пути.
Документация для qr//
гласит, что
STRING интерполируется так же, как
УЗОР в м / УЗОР / .
, который предположительно включает в себя поведение не перекомпиляции регулярных выражений, для которых шаблон не изменился или не может измениться в случае не включения интерполированных переменных. Например, вам не нужно перекомпилировать этот шаблон на каждой итерации цикла:
foreach my $char ('a' .. 'z') {
my $vowel = qr/[aeiou]/;
say "$char is a vowel" if $char =~ $vowel;
}