Регулярные выражения Perl и их применение

       

Отсутствие побочных эффектов у оператора split


Оператор split не имеет побочных эффектов: он не изменяет регулярное выражение по умолчанию, не устанавливает специальные переменные $1, …, $`, $&, $' и т.д. Существует лишь один побочный эффект, не связанный с регулярными выражениями: при использовании оператора split в скалярном контексте он записывает возвращаемый результа в массив @_, который также используется для передачи параметров функциям.

При применении директивы use warnings или параметра -w при запуске Perl, выдается соответствующее предупреждение:

#!/usr/bin/perl -w use strict;

scalar split /(?=\w)/, "abcd"; print @_;

Напечатается

Use of implicit split to @_ is deprecated at z.pl line 4. abcd

Сказанное об отсутствии побочных эффектов не означает, что внутри регулярного выражения нумерованные переменные не создаются. Если их распечатать во встроенном коде Perl, то мы увидим их значение. Просто после окончания работы регулярного выражения восстанавливаются старые значения всех специальных переменных регулярных выражений. Например, оператор

split /(\w)(?{ print "=$1=" })/, "abcd";

напечатает текст

=a==b==c==d=



Содержание раздела