мы использовали регулярное выражение, которое
На печать выводится
a c
Пояснение: в операторе $a =~ /$re/; мы использовали регулярное выражение, которое совпало, и напечаталась буква a. Далее мы можем множество раз задавать пустое регулярное выражение //. Вместо него будет использоваться это последнее совпавшее кэшированное регулярное выражение. Это видно при печати буквы c. Если теперь изменить содержимое переменной $re, то это не повлияет на результат применения пустого регулярного выражения, потому что интерполированное значение переменной $re (т.е. внутреннее представление литерала (\w)) уже находится в кэшированном регулярном выражении по умолчанию).
Эта оптимизация не является естественной и с приходом объектов регулярных выражений она устарела.
Если оператор поиска или замены не содержит ничего кроме объекта регулярного выражения:
my $re=/…/; … if ($_ =~ $re) … или if (m/$re/) …
то в этом операторе напрямую применяется откомпилированный объект регулярного выражения.
Здесь уместно вспомнить об опасности применения модификатора o с объектами регулярных выражений:
my $re=/…/o;
который дает неожиданный и неприятный эффект, описанный ранее.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий