Perl: ¿Por qué no eval '/ (...) /' establece $ 1?
Si se produce una coincidencia de expresión regular dentro de una evaluación, los cambios en las variables relacionadas con la captura ($ 1, etc.) no serán visibles en el entorno externo. ¿Es esto un error?
perlop yperlre No parece mencionar ninguna de esas restricciones.
Por ejemplo:
use strict; use warnings;
$_ = "hello";
eval '/(.*)/';
print "GOT: $1\n";
da:
Use of uninitialized value $1 in concatenation (.) or string at -e line 1.
GOT:
Una demo más sucinta es:
perl -we '$_="foo"; eval q(/(.*)/;) ; print "GOT:$1\n";'