イマドキの(?)Perlの環境構築

そういえば、環境構築の話をまだ書いていなかったので、メモ残しておきます。

perlbrewとcpanmで環境構築

歴史的な話などはよく分かりませんが、perlbrewとcpanmというのが割りとホットなツールのようです。

perlbrew

複数のPerlを管理できるツールです。RubyでいうところのRVMの位置づけのツールだと思います。

ということで、複数バージョンの環境を用意する必要が有る場合や、プリインストール環境を汚したくない場合は、まずこれを入れるのが良さそうです。

インストールは以下の様な感じでしょうか*1

$ curl -L http://install.perlbrew.pl | bash
$ echo 'source $HOME/perl5/perlbrew/etc/bashrc' >> ~/.bash_profile
$ source ~/.bash_profile

インストールできるバージョンを確認し、5.16をインストールしてみます。

$ perlbrew available
  perl-5.19.3
  perl-5.18.1
  perl-5.16.3
  perl-5.14.4
  perl-5.12.5
  perl-5.10.1
  perl-5.8.9
  perl-5.6.2
  perl5.005_04
  perl5.004_05
  perl5.003_07
$ perlbrew install perl-5.16.3
...(長い)
$ perlbrew switch perl-5.16.3
$ perl -v

This is perl 5, version 16, subversion 3 (v5.16.3) built for darwin-2level

Copyright 1987-2012, Larry Wall
...

"~/perl5"以下に全部環境が構築されるので、安心ですね。

cpanm

PerlといえばCPAN、というのはPerl使ったこと無い自分でも知っていましたが、それのフロントエンドのcpanの改良版のcpanmというのを使うのが今風らしいです。

perlbrew使っている場合は、以下のワンライナーでOKみたいです。使ってない場合は、sudoが必要かもしれません。

$ curl -L http://cpanmin.us | perl - App::cpanminus
$ which cpanm
/Users/USERNAME/perl5/perlbrew/perls/perl-5.16.3/bin/cpanm 

問題無さそうですね。

ただ、cpanmもといcpan自体が古いツールのせいか、コマンドのインターフェースがあまりモダンじゃないので、使う前に色々使い方をチェックしておいたほうがよさそうです。例えば、

$ cpanm install DBD::mysql

とかすると、引数がダイレクトでモジュール名を表す仕様なので、"install"なるモジュールをインストールしようとします(汗)。

他にも、インストール済みのモジュールリストの出力をするには、

$ find `perl -e 'print "@INC"'` -name '*.pm' -print
とか
$ perl -MExtUtils::Installed -le 'print join "\n" => sort ExtUtils::Installed->new->modules;'
とか
$ perl -MExtUtils::Installed -e '$inst=ExtUtils::Installed->new();print $_." ".$inst->version($_)."\n" for $inst->modules'

とか、つべこべ言わずperlプログラム書けや、ということらしいです。$ cpan listとかで出来るようにしてくれよ、と思うのだけれど、うーん…。

*1:Macは.bashrc無いので.bash_profileに。