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メソッドをオーバーライドしてやることで、関数なんかのインポートを実現しているわけだ。どこだったかで読んだインポート・エクスポートの仕組みも、そんなようなことが書いてあった。パズルのピースがぴっちりハマった感じ。どうって事でもないのだけれど。