Perl

汎用的なライブラリ中に
use モジュール;
と書くことは、プログラム開始前に必要なモジュールが揃っているかを
チェックし、途中で、必要なモジュールのロードに失敗したという
ランタイムエラーを出さないようにするためには大切なことだが、
プログラムの動作によっては使わないかもしれないモジュールを
ロードするというのは、かなりの無駄。

というわけで、必要な時に初めてロードするようにするには、
sub hogehoge {
	require モジュール;
	import モジュール;
	
	サブルーチン
}
とする。


Vine Linux(少なくとも2.6r1は)のperlは、
(たぶん/usr/bin/perlの中に埋め込まれている)
AnyDBM_FileのISAがちょっと変(たぶん互換性のため)なので、
dbmopenをすると、.dir/pagという拡張子のファイルが生成される。

ちなみに、dbmopenを呼ぶと、内部ではAnyDBM_File.pmが
呼び出されている。


package なんとか;
という文は、少なくともブロックのおわりまで有効。
したがって、たとえばhogehoge.pm内で
  package hogehoge;
  require 'funifuni.pl';
  なんたらかんたら
  1;
と書いたりすると、funifuni.pl内の$fooは$hogehoge::fooになる。
packageとrequireの行を逆にすれば、$fooは$main::fooになる。