Perl Hackers Hub

第32回 新人さんのためのPerl入門(1)

この記事を読むのに必要な時間:およそ 2 分

本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは普段Webアプリケーションの開発をしているhiroki.oさんで,テーマは「新人さんのためのPerl入門」です。

本稿のサンプルコードはWEB+DB PRESS Vol.86のサポートサイトから入手できます。

昨年は新人でした

筆者は2014年にプログラマとして新卒入社し,Perlを学び始めました。今回は筆者の経験をもとに知っておきたい知識として,Perlの導入からモジュールやperldocの使用方法,そしてモジュールを使った簡単なプログラムの作成までを,柔軟なPerlならではの文法のハマりどころを含めつつ解説していきます。

環境構築

まずはPerlの導入方法を説明します。今回は個人の開発環境の例として紹介します。ここに挙げた方法にとらわれず,用途に沿った方法で導入しましょう。

Perlのバージョン

現在の環境に導入されているPerlのバージョンを調べるにはターミナルでperl -vと入力してください。

$ perl -v

This is perl 5, version 20, subversion 2 (v5.20.2)

versionの数値が偶数のものが安定版,奇数のものが開発版とされており,基本的には安定版の使用が推奨されています。本稿は執筆時点(2015年3月)の最新安定版であるPerl 5.20.2にて動作確認をしています。

plenvで複数のバージョンを扱う

plenvは複数バージョンのPerlを管理できます。システムの管理権限を必要としないので,最新版がリリースされても気軽に導入できます。また,プロジェクトごとに使用するバージョンを変更することもできます。

plenvは,GitHubのリポジトリや,OS XであればHomebrewから入手しインストールできます。

plenvがインストールできたら,Perl 5.20.2をインストールします。

$ plenv install 5.20.2

versionsサブコマンドでインストール済みのバージョンを確認でき,システム全体のPerlのバージョンを指定したい場合はglobalカレントディレクトリ以下で使うPerlのバージョンを指定したい場合はlocalサブコマンドを使います。

$ plenv versions
* system (set by /usr/local/var/plenv/version)
  5.20.2
$ plenv global 5.20.2

plenv以外にもPerlのバージョン管理ソフトウェアとして,PerlbrewやPerl以外にも対応したxbuildといったものがあります。

モジュールを使う

Perlの大きな特徴の一つに,モジュールを組み込むことによって機能拡張するしくみがあります。モジュールにより,処理やロジックの実装が容易になります。

CPANとは

Perlモジュールの多くはCPANComprehensive Perl Archive Networkという巨大なアーカイブで公開されており,2015年3月現在で14万ものモジュールが登録されています。CPAN内のモジュールを検索したいときはブラウザでhttp://search.cpanm.org/http://metacpan.org/から検索できます。

cpanmでモジュールを管理する

CPANからのモジュールの取得や管理はPerlに付属しているcpanというコマンドで行えますが,本稿ではcpanコマンドよりも高機能で使いやすいcpanm(cpanminus)の導入を推奨します。

cpanmはcpanコマンドやGitHubリポジトリからインストールできますが,plenv環境では専用のコマンドがあるのでそちらを使います。plenv環境では実行ツールをインストールしたあとにはplenv rehashの実行が必要なので覚えておいてください。

$ plenv install-cpanm
$ plenv rehash

モジュールのインストール

cpanmでモジュールをインストールするには,モジュール名を引数にしてcpanmコマンドを実行します。

$ cpanm LWP::UserAgent
--> Working on LWP::UserAgent
(省略)
Successfully installed libwww-perl-6.13
1 distribution installed

モジュールをインストールする際にエラー文が出て,インストールに失敗することがあります。--forceオプションを付ければ強制的にインストールできますが,まずは出力されたログを見てみましょう。~/.cpanm/build.logに最後に実行したcpanmコマンドのログファイルへのシンボリックリンクが生成されているので,確認すると解決方法が見つかるかもしれません。

モジュールのアンインストール

モジュールのアンインストールは,-Uまたは--uninstallオプションで行います。

モジュールのアップデート

インストールされているモジュールのアップデートは,インストール時と同様にcpanm モジュール名と実行すればアップデートの確認と更新をしてくれます。

インストールされているすべてのモジュールに対して確認や更新を行いたい場合は,cpan-outdatedというツールが便利です。cpan-outdatedはモジュールと同様にcpanm App::cpanoutdatedでインストールできます。

$ cpan-outdated
M/MI/MIYAGAWA/App-cpanminus-1.7027.tar.gz
D/DR/DROLSKY/Params-Validate-1.18.tar.gz
R/RS/RSAVAGE/Config-Tiny-2.22.tgz
...

出力されるリストをパイプでcpanmに渡すことにより,モジュールをまとめて更新できます。

$ cpan-outdated | cpanm

perldocの使い方

Perlを学んでいくうえで大きな情報源の一つはperldocです。言語仕様や標準関数と定義済みの特殊変数,モジュールのドキュメントやソースコードまでをperldocコマンド一つで参照できます。perldocはPerlとともにインストールされています。

perldocをターミナルで実行すると使い方が表示されます。

$ perldoc

基本的にperldoc オプション 知りたいこととして実行します。たとえば特殊変数$_について知りたい際には-vオプションを指定します。Perlでは記号を使った特殊変数を多用しており,記号の検索に手間がかかる検索エンジンよりも手早く情報を得られます。

$ perldoc -v '$_'

-mオプションではモジュールのソースコードを直接参照できます。

$ perldoc -m Web::Scraper

EmacsやVimなどのエディタからperldocを参照するプラグインもお勧めです。ターミナルに戻らずperldocを参照でき,作業が捗ります。また,Web版や有志によって日本語に翻訳されているperldoc.jpもあるので参考にしてください。

<続きの(2)こちら。>

著者プロフィール

hiroki.o

1989年,静岡県生まれ。2014年に大学院修了後,新卒で某企業に入社しプログラマになり本格的にPerlを学びながら業務でWebアプリケーションの開発などに携わっている。

コメント

  • Re: 「perldoc -v $_」について

    コメントありがとうございます。
    ご指摘の通りで、「''」で囲うべきですね。
    修正させて頂きました。

    Commented : #2   (2015/08/22, 23:29)

  • 「perldoc -v $_」について

    「$ perldoc -v $_」ですが、$_をシェルが展開してしまい、
    perldocに変数名が渡されずエラーとなる場合が多いと
    思います。「$ perldoc -v '$_'」とすべきでは。

    Commented : #1   (2015/08/19, 09:12)

コメントの記入