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

       

Алгоритм работы операторов m// и s///


В языке Perl есть такое понятие - контекст выражения. Операторы могут возвращать значение, которое зависит от того, чему оно присваивается. Если оно присвавается скалярной переменной, то возвращаемое значение может быть одно, а если присвоение происходит массиву, то возвращаться может уже список значений. Таким является оператор m//. Например, если мы используем его в условии условного оператора:

if (m/…/) { … }

то это скалярный контекст, т.к. в условии ожидается одно значение, которое трактуется как истина или ложь. А если написать

my @m=m/…/;

то это списковый контекст, в котором оператор m// возвратит список значений. Оператор print является списковым, т.к. он ожидает список в качестве своего аргумента, поэтому, если написать

print m/…/;

то это также будет использование оператора поиска в списковом контексте.



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