Пример 1
my $a = "text";
my $b = "text2";
print 1 if $b =~ /text2/;
print 2 if $a =~ //;
# В результате будет напечатано 1;
Пример 2
my $a = "text";
my $b = "text2";
print 1 if $b =~ /text3/;
print 2 if $a =~ //;
# В результате будет напечатано 2;
Perl вместо пустого регекспа всегда вставляет предыдущий успешно совпавший регексп. Все это описано в perldoc perlre :).
Бойтесь пустых регекспов и пишите, например так - m/(?:$var)/
2 коммент.:
Я что-то не понимаю, а какой у нас есть успешно совпавший регексп во втором случае (когда выводится 2)?
В первом примере вместо пустого регекспа перл подставляет /text2/;
А во втором примере первый регексп не совпал, значит в строке print 2 if $a =~ //; пустой регексп и остается пустым, а пустой регексп всегда совпадает с любой строкой
Отправить комментарий
Не забудьте добавить себя в постоянные читатели и включить уведомления о новых комментариях, либо воспользуйтесь RSS каналом ;)