モジュールのバージョンを確認するときどうやってますか?

2010-12-21

もう恋なんてしないなんて、言わないよ絶対kamipoです。

ときに皆さん、Perlのモジュールのバージョンを確認するときどうしてますか?
僕はPerlをはじめた最初のころ、ずっとこうやっていました。

$ perl -MAcme::Hidek -le 'print $Acme::Hidek::VERSION'
40.0

こうやってたの、僕だけじゃないですよね!?

いまでは以下のワンライナーにaliasを張っているので毎回がんばってワンライナーを打たなくてよくなりました。

$ alias pmversion='perl -le '"'"'for $module (@ARGV) { eval "use $module"; print "$module ", ${"$module\::VERSION"} || "not found" }'"'"
$ pmversion Acme::Hidek Acme::AKB48
Acme::Hidek 40.0
Acme::AKB48 not found

複数のモジュールを指定できて、まだインストールされてないモジュールのときは「not found」を表示してくれるのでとっても親切ですね!

このワンライナーを書いたときは知らなかったんですが、同様のことをするpmversというモジュールもCPANにはありました。

$ cpanm pmvers
$ pmvers Acme::Hidek
40.0

また、typesterさんに教えてもらった方法で以下のやり方もあります。

$ perl -MAcme::Hidek\ 9999
Acme::Hidek version 9999 required--this is only version 40.0.
BEGIN failed--compilation aborted.

他にもおもしろい方法があったらぜひ教えてください!

追記

いろんな方法を教えてもらいました!


fbisさんの方法

$ perl -e "use Acme::Hidek 9999"
Acme::Hidek version 9999 required--this is only version 40.0 at -e line 1.
BEGIN failed--compilation aborted at -e line 1.

typesterさんに教えてもらった方法だとwindowsでうまく動いてくれないんだそうです。
まぁ同じことですけどwindowsの人は要注意ですね!


gfxさん、makamakaさんの方法

$ cpanm V
$ perl -MV=Acme::Hidek,Acme::AKB48
Acme::Hidek
    /usr/local/lib/perl/5.10.1/Acme/Hidek.pm: 40.0
Acme::AKB48
    Not found

-MVって指定できるのがコマンドラインオプションみたいでかっこいいV.pm
複数モジュール指定できてインストールされてるパスも表示してくれるすぐれものですね!


hirose31さんの方法

$ pmver Acme::Hidek
40.0
/usr/local/lib/perl/5.10.1/Acme/Hidek.pm

V.pmと同等の機能を備えていて
-cd オプションを指定するとモジュールのディレクトリにcdしてくれる便利機能がこころにくいですね!


kitsさんの方法

$ perldoc -m Acme::Hidek

perldoc -m でソースコードを直に見てしまう一石二鳥な方法ですね!


他にもモジュールのバージョンを確認できるCPANモジュールはありますが
xaicronさんが昔いろいろ教えてもらってブログにまとめているのでそちらも参照してみてください!

以上、教えてもらったいろんな方法の紹介でした!


明日はAcme大全が大人気のまかまか先生です!楽しみですね!