perlコマンドの評価順
extlib的なプロジェクトローカルなディレクトリにCPANモジュールを突っ込んでいて、そのライブラリがうまくインストールできているか(動くか)を確かめたかったのでワンライナーで試していたらなんか失敗した。
$ perl -MDateTime -Mlib=extlib/lib/perl5/ -e 'print DateTime->now(time_zone=>"local");' Can't locate DateTime.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .). BEGIN failed--compilation aborted.
@INCにextlibを登録していなかったので、-Mlibでextlibを指定したのに...
で、以下のように-MDateTimeと-Mlibの順序を変えてみた。
$ perl -Mlib=extlib/lib/perl5/ -MDateTime -e 'print DateTime->now(time_zone=>"local");' 2013-09-26T20:45:19
無事動きました。
まぁよくよく考えて見れば、-Mlibの評価の前に-MDateTimeでuseしようとしてもそりゃ見つかんないわな。
use DateTime; use lib 'extlib/lib/perl5';
みたいなもんだ。
perlコマンドの-Mの動きを少し覚えた。
余談
perlコマンドのオプションを調べるにはperlrunというマニュアルのエントリを調べれば良いことを覚えました。
http://perldoc.jp/docs/perl/5.6.1/perlrun.pod