読者です 読者をやめる 読者になる 読者になる

It's raining cats and dogs.

無駄なことなんてないはず

perlコマンドの評価順

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