Perl: Warum setzt eval '/ (…) /' nicht $ 1?

Wenn eine Übereinstimmung mit regulären Ausdrücken innerhalb einer Auswertung auftritt, sind Änderungen an den erfassungsbezogenen Variablen ($ 1 usw.) in der äußeren Umgebung nicht sichtbar. Ist das ein Bug?

Perlop undperlre scheint keine solche Einschränkung zu erwähnen.

Zum Beispiel:

 use strict; use warnings;
 $_ = "hello";
 eval '/(.*)/';
 print "GOT: $1\n";

gibt:

Use of uninitialized value $1 in concatenation (.) or string at -e line 1.
GOT:

Eine prägnantere Demo ist:

perl -we '$_="foo"; eval q(/(.*)/;) ; print "GOT:$1\n";'

Antworten auf die Frage(3)

Ihre Antwort auf die Frage