useとrequireの違い
よく『大ざっぱに言うと最初に読み込まれるか、実行時に読み込まれるかだ。』みたいなものを見かけるが、大ざっぱじゃないところが知りたい。
で、これまで見かけたいろいろを合わせると、こういうことなのだろうか?
use Foo;
は
BEGIN{ require Foo; Foo->import(); }
と等価?
今はどうでも良いことなのだが、無性に気になってきた。真面目に調べよう。
perldoc -f use
# Perlってこういう時本当に心強い…
これによると
BEGIN { require Module; import Module LIST; }
ってことらしい。ほぼ予想通り。ちなみにLISTとは
use Module qw( LIST );
みたいにやるあれだ。
逆に、importメソッドをオーバーライドしてやることで、関数なんかのインポートを実現しているわけだ。どこだったかで読んだインポート・エクスポートの仕組みも、そんなようなことが書いてあった。パズルのピースがぴっちりハマった感じ。どうって事でもないのだけれど。