Perl: Dlaczego nie ma eval '/ (…) /' ustaw 1 $?
Jeśli dopasowanie wyrażeń regularnych występuje wewnątrz eval, zmiany zmiennych związanych z przechwytywaniem ($ 1 itd.) Nie są widoczne w środowisku zewnętrznym. Czy to błąd?
perlop iperlre chyba nie wspomina o takich ograniczeniach.
Na przykład:
use strict; use warnings;
$_ = "hello";
eval '/(.*)/';
print "GOT: $1\n";
daje:
Use of uninitialized value $1 in concatenation (.) or string at -e line 1.
GOT:
Bardziej zwięzłe demo to:
perl -we '$_="foo"; eval q(/(.*)/;) ; print "GOT:$1\n";'