Perl: Почему eval '/ (…) /' не устанавливает $ 1?

Если в eval происходит совпадение с регулярным выражением, изменения переменных, связанных с захватом ($ 1 и т. Д.), Не видны во внешней среде. Это ошибка?

Perlop а также Perlre Похоже, не упомянул о таком ограничении.

Например

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

gives:

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

Более краткая демонстрация:

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

Ответы на вопрос(3)

Ваш ответ на вопрос