Perl: Por que não eval '/ (…) /' set $ 1?
Se uma correspondência de expressão regular ocorrer dentro de um eval, as alterações nas variáveis relacionadas à captura ($ 1, etc.) não estarão visíveis no ambiente externo. Isso é um inseto?
perlop eperlre parece não mencionar tal restrição.
Por exemplo:
use strict; use warnings;
$_ = "hello";
eval '/(.*)/';
print "GOT: $1\n";
dá:
Use of uninitialized value $1 in concatenation (.) or string at -e line 1.
GOT:
Uma demonstração mais sucinta é:
perl -we '$_="foo"; eval q(/(.*)/;) ; print "GOT:$1\n";'