インポート無しでuseすれば名前空間は汚れないし。。 自分の空間にしかインポートされないから、勝手に汚染されることはないじゃろ。 どうせモジュールなんてmod_perlがキャッシュしてくれるから、分かりやすいように書けばよろしい。 use hogehoge ();
59 :
あぁ文章がめちゃくちゃだった。。 もっとまともな説明は、 use モジュールの名前 (インポートする関数名のリスト); 2つ目のリストが省略されたら、モジュールのデフォルトのものがインポートされる。 もちろん、デフォルトが何もインポートしない、になっているかもしれない。 つまり、、、 use Module () と、require Moduleは、いつ読み込まれるか、っていう違い(コンパイル時、 実行時)はあるけれど、結果的には同じことがおきる。
60 :
つまり結果が同じならどうでも良いんだってことよ。
61 :
ふ〜ん。ま、そんなもんか。
62 :
object の package って require しても使えるんだっけ?
63 :
use → モジュールが読み込まれ、関数が自動的にインポートされる。返り値は? require → モジュールが読み込まれるだけで、インポートはされない。成功すれば真の値をかえす。 という理解でいいかな。
64 :
マジレスすると use Module @list は BEGIN { require Module; Module->import(@list) } と等価、 no Module @list は BEGIN { Module->unimport(@list) } と等価だ。 import 関数は Perl 標準の Exporter モジュールから 継承してるケースが殆どだから、シンボルの輸出入に 関する仕組みは Exporter の POD を読めば理解できる。 しかし import を自前で実装してるモジュールもあるし、 require した段階で main パッケージに割り込む行儀の 悪いモジュールもある。よって use Module (); で確実に 輸入規制ができるとは限らない。 use は sub NAME と同じく宣言だから戻り値は無い。 my $rv = use Module; は構文エラーになるし、無理矢理 my $rv = eval { use Module; }; 等としても undef が入るだけ。