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";'

questionAnswers(3)

yourAnswerToTheQuestion