Perlでインストールされているモジュールを全部リストアップする

[twitter:@fujiwara] さんのこれ、

をベースにちょっと弄ってモジュールをリストアップするスクリプトを書いて使ってたんですが、core モジュールがリストアップされてなかったので、もろもろ対応したのを上げましたのでどうぞみなさまお使いくださいませ。

出力フォーマットは、バージョン固定な cpanfile と Perl のハッシュの2つです。

Carton使ってないけど、同じモジュール、同じバージョンのモジュールを一式、新環境にもりっとまるっと入れたい!とかってときに便利かと思います。

蛇足

perlとcore moduleのバージョンは、Module::CoreList に含まれる corelist コマンドで知ることができます。

### Perl 5.16.1に含まれるCarpモジュールのバージョンを調べる
$ corelist -v 5.16.1 Carp
Carp 1.26

### Perlに含まれるCarpモジュールのバージョンを、Perlのバージョンごとにリストアップする
$ corelist -a Carp
...
  v5.8.3     1.01
  v5.8.4     1.02
  v5.8.5     1.03
...

便利なので、最新のModule::CoreListを自分の環境に入れておくといいと思います。

あと、インストールされているPerlモジュールのバージョンやパスを知るには、このようなシェル関数を使うと便利です。

$ pmver Carp
1.26
/home/hirose31/perlbrew/perls/perl-5.16.3/lib/5.16.3/Carp.pm
 
$ pmver -cd Carp
1.26
/home/hirose31/perlbrew/perls/perl-5.16.3/lib/5.16.3/Carp.pm
$ pwd
/home/hirose31/perlbrew/perls/perl-5.16.3/lib/5.16.3

追記

pmtoolsという便利ツール詰め合わせがあるそうです!!