Perl Hackers Hub

第7回新人さんのための仕事で使えるPerl基礎知識(1)

本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはacotieこと横山彰子さんで、テーマは「新人さんのための仕事で使えるPerl基礎知識」です。CPAN環境の構築方法や変数の扱いなど、新人さんがPerlで最初につまずきがちなこと、苦手とされがちなことを、ピックアップして解説していきます。

今どきのCPAN環境構築術

Perlの最大の特徴はCPANにあります。CPANは「Comprehensive Perl Archive Network」の略で、Perlで書かれた世界中のソフトウェアを集めた巨大なアーカイブです。CPANには再利用性・汎用性の高いモジュールが登録されているため、Perlを使って何か新しい作品を作り始めたいときに、先人の知恵を借りてスピーディかつスマートに開発できます。

登録モジュールの検索やドキュメントの閲覧サービスも提供されているため、Perlプログラマは適切なモジュールを探して、簡単に入手できます。

しかしCPANには、⁠cpanコマンドの設定が必要で面倒」⁠root環境でなければインストールできない」といった誤解があります。実際は気軽に使えるものなのですが、慣れていない人には敷居が高いと思われやすく、筆者は残念でなりません。そこでここでは、従来からのcpanコマンドの使い方をはじめ、最新のCPANモジュールのインストール方法を紹介します。

cpanコマンド

cpanコマンドは、ユーザの手持ちのライブラリの管理、CPANミラーへの問い合わせ、モジュールのダウンロードを行うものです。この専用ソフトウェアを利用すると、簡単なコマンドでCPANモジュールを検索・導入可能になります。

それではさっそく、CPANモジュールをインストールできるようにするまでの環境を整えましょう。

cpanコマンドの確認

cpan -vでCPAN.pmのバージョンを確認できます。

$ cpan -v
/opt/local/bin/cpan script version 1.9, CPAN.pm version
1.9402

cpan -hでコマンドのヘルプを確認できます。

$ cpan -h

cpanコマンドの使い方

では、cpanコマンドを使ってみましょう。

cpanコマンドを実行する方法にはいくつかあり、次の2つはどちらも同じ意味となります。

$ sudo perl -MCPAN -e shell
$ sudo cpan

初回実行時には初期設定が必要ですが、基本的にはすべてデフォルトのままでかまいません(あとから変更できます。環境によってはmakeがインストールされてないとエラーになる場合があります⁠⁠。

次のようにcpanシェルの対話モードが表示されたら準備完了です。

cpan>

モジュールのインストールには、cpanシェルが立ち上がった状態でinstall モジュール名と入力します。これでダウンロード、解凍、テスト、インストールまでを行います。ここでは大文字・小文字も厳密にチェックされるので注意してください。

cpan> install モジュール名

CPANモジュールのインストールディレクトリは、次のコマンドで知ることができます。

$ perl -e 'print "@INC"'
/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /
usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl

cpanmコマンド

cpanm(App::cpanminus)は、リソースが限られているVPSVirtual Private Serverなどの環境でもCPANを快適に使えることを目指して、宮川達彦さんが中心になって開発されているコマンドです。cpanmコマンドを使えば、root権限を持っていないユーザでも、設定なしでCPANモジュールを取得して解凍してビルドしてインストールまでしてくれます。さらに、従来のcpanコマンドより少ないメモリで動作し、メッセージが少ないなどのメリットもあります。cpanよりもcpanmを使用することをお勧めします。

cpanmコマンドのインストール

cpanmを一般ユーザ領域にインストールする場合は、次のように行います。

$ cd ~/bin
$ curl -O https://github.com/miyagawa/cpanminus/raw/master/cpanm
$ chmod +x cpanm

cpanmコマンドの使い方

cpanmコマンドを使ったCPANモジュールのインストールは、cpanm モジュール名で行います。

$ cpanm Acme::Acotie
--> Working on Acme::Acotie
Fetching http://search.cpan.org/CPAN/authors/id/Y/YA/
YAPPO/Acme-Acotie-0.02.tar.gz ... OK
Configuring Acme-Acotie-0.02 ... OK
Building and testing Acme-Acotie-0.02 ... OK
Successfully reinstalled Acme-Acotie-0.02

新たにCPANの環境を移行する

新しくCPAN環境を作りたい場合や、環境を移行したい場合は、インストール済みのモジュール一覧ファイルをあらかじめ作成しておくと便利です。インストール済みのモジュール一覧ファイルを作るコマンドは次のとおりです。

$ cpanm ExtUtils::Installed
$ perl -MExtUtils::Installed -e 'print "$_\n" for ExtUtils::Installed->new->modules' > modules.txt

これで、改行で区切られたモジュールのリストファイルが得られます。cpanmコマンドにモジュールのリストファイルを引数として渡すと、リストファイルに書かれたモジュールをすべてインストールしてくれます

$ cpanm < modules.txt

cpanmの細かいオプションやドキュメントはcpanm -hというヘルプコマンドに載っていますので参考にしてください。

環境変数の設定

cpanmをデフォルトのまま使うと、ホームディレクトリ以下の~/perl5ディレクトリにCPANモジュールがインストールされます。

$ tree ~/perl5/lib/perl5/
/Users/username/perl5/lib/perl5/
|-- Acme
|   `-- Monta.pm
`-- darwin-2level
    |-- auto
    |   `-- Acme
    |       `-- Monta
    `-- perllocal.pod

perlコマンドやperldocコマンドを実行した際にこのディレクトリが認識されるように、シェルの環境変数を設定しましょう。.bashrcや.bash_profi e、.zshrcなど各自のシェルの環境変数に、export PERL5LIB=$HOME/perl5/lib/perl5を追記したあと、次のコマンドを実行してください。

$ source ~/.bashrc

この環境変数PERL5LIBは、Perlのライブラリファイルを探すときに、標準のライブラリディレクトリ、カレントディレクトリよりも前に探しにいくディレクトリをカンマで区切って並べたリストです。

うまく認識されるか試してみましょう。

$ perldoc -l Acme::Monta
/Users/username/perl5/lib/perl5/Acme/Monta.pm

cpan-outdatedを使い全モジュールのアップデートを行う

プロジェクトの開発段階で、利用しているCPANモジュールを最新にし続けることが可能な場合は、cpanoutdatedを使って、すでにインストールされているCPANモジュールの中からアップグレード可能なモジュールだけをリストにします。そのリストをcpanmに読み込ませることで、次のようなワンライナーで簡単にインストール済みのすべてのCPANモジュールのアップデートできます。

$ cpan-outdated | cpanm

perlbrewコマンド

perlbrew(App::perlbrew)は、劉康民さんが開発されている、複数のバージョンのPerlをインストールし切り替えて使うことができるツールです。たくさんcpanモジュールをメンテナンスしている場合、プロジェクトの都合で複数のPerlのバージョンで検証しなければならない場合、新いPerlのバージョンを早く使ってみたい場合などに使えるのでお勧めです。

perlbrewコマンドのインストール

次のようにしてperlbrewをインストールします。

$ curl -LO http://xrl.us/perlbrew
$ perl perlbrew install
$ rm -f ./perlbrew

次のコマンドでperlbrew自体を初期化します。

$ $HOME/perl5/perlbrew/bin/perlbrew init

設定ファイルに環境変数を追加します。

$ echo 'source $HOME/perl5/perlbrew/etc/bashrc' >> ~/.bashrc
$ source ~/.bashrc

perlbrewコマンドの使い方

perlbrewでは、次のようにPerlのバージョンを指定してインストールします。

$ perlbrew install perl-5.12.1

Perlのバージョンを切り替えるにはperlbrew switchを使います。次の例ではバージョン5.12.1に切り替えています。

$ perlbrew switch perl-5.12.1
$ perl -v
This is perl 5, version 12, subversion 1 (v5.12.1) built
for darwin-2level

次のコマンドで、インストール済みのPerlを確認できます。アスタリスク(*)が付いているものが現在使用しているバージョンです。

$ perlbrew list
* perl-5.12.1
  perl-5.13.7
  /opt/local/bin/perl (5.8.9)
  /usr/bin/perl (5.10.0)

複数のバージョンを切り替えて使うために、Perlのプログラムファイルのシェバンと呼ばれる#!から始まる1行目を、次のように記述する必要があります。

#!/usr/bin/env perl

環境変数の設定

perlbrewでインストールしたPerlを使用した場合、CPANモジュールはデフォルトでは$HOME/perl5/perlbrew以下にインストールされます。インストール先のディレクトリを変更したい場合は、.bashrcなど各自のシェルの環境変数にexport PERLBREW_ROOT=/usr/local/perlbrewを追加し、source ~/.bashrcを実行したあと、再びperlbrew initコマンドを実行してください。

おすすめ記事

記事・ニュース一覧