私は次のプログラムを持っています:
use warnings;
use strict;
BEGIN {
print \&mysub;
}
sub mysub {};
print \&mysub;
その出力:
CODE(0x118e890)CODE(0x118e890)
ブロックはBEGIN
コンパイル時に処理されます。その時点で、 の定義はsub mysub
コンパイラにはまだ見えません。しかし、プログラムは正しいサブルーチン アドレスを出力します。
ここでエラーが発生しないのはなぜですか? これはある種の自動活性化ですか?