perlのクロージャと$1
の正規表現の変数にバグが見つかりました。単純に、それらは一緒に混合しません。perlのクロージャと正規表現の変数
このコードを考えてみましょう。
use warnings;
while ("1234567890"=~/(.)/sg) {
push @subs, sub{print $1;};
}
for (@subs) {$_->()}
あなたはperlは今、すべての数字を印刷することを想像 - その代わり、私は未定義$1
から10回の警告を得ました。
本当にバグですか、それともperlのドキュメントで何かを見逃してしまったのですか?なんらかの理由がありますが、なぜ$1
は定義されておらず、クロージャの一部ではありませんか?
ああ、ええ、それは理にかなって:)しかし、私はあなたが印刷$ xをメンターと思います。 –
ありがとう、それを修正しました(: –