Perl Hackers Hub

第26回 Perlで困ったときの調べ方(2)

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

前回の(1)こちらから。

モジュールについて調べる

モジュールのドキュメントを調べる

ある程度大きなアプリケーションになると,いくらperldocコマンドやgrepコマンドでPerl本体のドキュメントを調べても見つからない関数が出てきます。これはPerl本体のドキュメントに不備があるからではなく,その関数がコード中でuseされているモジュールに由来するものだからです。

perldocコマンドは,インストールされているモジュールのドキュメントを読むときにも使えます。たとえば,Carpモジュールのドキュメントを読みたいときは次のようにします注7)⁠

$ perldoc Carp
注7)
CarpモジュールはPerlに標準添付されているモジュールなので,ふつうは必ずインストールされていますが,OSによってはコアモジュールや,そのドキュメントを別のパッケージに分離している場合があります。Carpのドキュメントが表示されなかった場合はOSのパッケージ管理システムから該当するパッケージをインストールしてください。

モジュールのソースコードを調べる

Perlのモジュールにはなるべくドキュメントを付けることが求められていますが,さまざまな事情から,必要な情報が載っていなかったり,そもそもドキュメントがまったくないこともあります。このような場合は実装を確認するしかありません。

perldocコマンドに-mオプションを付けると,モジュールのソースコードを表示できます。

$ perldoc -m Carp

perldocコマンドのページャとしてlessコマンドが使われている場合は,ソースコードを表示しているときに[v]キーを押下すると,環境変数VISUALないしEDITORに定義されているエディタが起動して内容を編集できるようになります。システムPerlを使っている場合はパーミッションの都合で保存できない場合が多いでしょうが,plenv環境では,インストール済みのモジュールにデバッグ用のコードを埋め込みたいときなどに重宝します注8)⁠

注8)
同様のことは,perldocコマンドの-lオプションを利用しても実現できます。

モジュールがインストールされていなかった場合

perldocコマンドでドキュメントやソースコードを表示できるのは,手元の環境にインストールされているモジュールのみです。インストールされていないモジュールについては,CPANなどからあらかじめインストールしておく必要があります。

なお,本連載第21回Carton & cpanm─⁠─ Perlモジュール管理最新事情で紹介があったCartonモジュールを使って管理しているモジュールは,通常のPerl環境からはインストールされていないように見えます。このようなモジュールのドキュメントやソースコードを確認したい場合は,次のようにcartonコマンド経由でperldocコマンドを実行します。

$ carton exec -- perldoc -m Carp

CPANについて調べる

CPANComprehensive Perl Archive Networkは,もともとは各地に分散していて見つけるのが大変だったPerlの情報を1ヵ所にまとめるために作られました。今では単なるモジュール置き場と認識されている人も多いかと思いますが,実際にはPerlのソースコードや,OS別のバイナリディストリビューション,Perlに付随するさまざまなドキュメントを配布する場でもありますし,そのまま使えるスクリプトなども登録されています。

最近ではCPANにアップロードせず,GitHubなどに置かれたままになっている情報もありますが,その成立の経緯からも,多くのPerlユーザにとって重要な情報はたいていCPANか,Perlの公式サイトからたどれるようになっています。手元の環境では解決できない問題があったらまずはCPANを覗いてみるのが調べものの常道です。

CPANからモジュールをインストールする

CPANに登録されているモジュールは,本連載第21回でも紹介があったcpanmコマンドを使ってインストールするのが簡単です。

plenvコマンドを利用している場合は,次のコマンドでcpanmコマンドをインストールできます。

$ plenv install-cpanm

単体でインストールする場合は,curlコマンドや,LWPモジュールに付属するlwp-requestコマンドなどを利用してcpanmコマンドのソースコードを取得し,それをコマンドラインから実行して任意のモジュール(この場合はApp::cpanminusモジュール自身)をインストールする,という手順を踏みます。

$ curl -kL http://cpanmin.us | \
  perl - App::cpanminus
$ lwp-request http://cpanmin.us | \
  perl - App::cpanminus
最新のCPANミラーを用意する

出張などでネットワークがない,または不安定な環境で作業をすることが多い人は,CPAN::Miniモジュールに付属するminicpanコマンドを使ってCPANの最新リリース(約3GB)を手元にコピーしておくと,いざというときに困らずに済みます。

$ minicpan \
  -l ~/minicpan \
  -r http://www.cpan.org/

minicpanコマンドで取り込んだCPANミラーからインストールする場合は,cpanmコマンドの--mirror-onlyオプションを利用します。次の例は,perldocコマンドのもとになっているPod::Perldocモジュールを,ローカル環境のMini CPANから最新版に更新します。

$ cpanm --mirror-only ~/minicpan \
  Pod::Perldoc

CPAN->grepを使う

perldocコマンドとgrepコマンドなどを駆使すると,インストール済みモジュールのソースコードをPerlのサンプルコード集として活用することもできますが,CのライブラリやPerlのC APIを使っているモジュールの場合,該当部分はコンパイルされた状態でインストールされるので,ソースコードは検索できません(コンパイルの必要がない,Perlで書かれた部分のみ検索できます)⁠

このようなC APIのソースコードや,インストールしていないモジュールのソースコードを検索したい場合は,CPAN->grepというサイトを利用するのが便利です。このサイトでは,CPANで公開されているすべてのディストリビューションの最新安定版(要するにMini CPAN)のソースコードや,テスト,付随するドキュメント類などを正規表現で検索できます。

著者プロフィール

石垣憲一(いしがきけんいち)

翻訳家兼プログラマ。歴史ネタ担当。最近は主にCPANツールチェーン界隈の片隅で活動中。

URL:http://d.hatena.ne.jp/charsbar/

コメント

コメントの記入