perldoc を使いこなす

国内滞在説が根強い miyagawa です。アメリカ合衆国国内という意味であれば、いつもそうなんですが。

今回は意外と知られていないと思われる perldoc コマンドの使い方を紹介します。perldoc は Perl モジュールに含まれる POD ドキュメントを整形して man 表示するツールで、perldoc モジュール名のようにして実行します。

% perldoc Web::Scraper

-l オプションをつけるとそのモジュールのあるパス、-m オプションで POD の代わりにソースコードそのものを表示することができます。

% perldoc -l Web::Scraper
/Library/Perl/5.8.6/Web/Scraper.pm
# .pm ファイルを vi で開く
% vi `perldoc -l Web::Scraper`
# .pm ファイルを PAGER で開く
% perldoc -m Web::Scraper

エラーにファイル名と行数が書いてあってその部分を見たい、なんてときには Emacs や Vim などにパイプで渡して開くと便利ですね。

-f オプションは Perl の組み込み関数のドキュメントを表示します。

% perldoc -f index
       index STR,SUBSTR,POSITION
       index STR,SUBSTR
               The index function searches for one string within another, but
               without the wildcard-like behavior of a full regular-expression
               pattern match.  It returns the position of the first occurrence
               of SUBSTR in STR at or after POSITION.  If POSITION is omitted,
               starts searching from the beginning of the string.  The return
               value is based at 0 (or whatever you've set the $[ variable
               to--but don't do that).  If the substring is not found, returns
               one less than the base, ordinarily "-1".

よく -X ファイルテスト演算子 の対応を忘れてしまって困りますが、そういうときは perldoc -f -X とすると一覧がでてきます。

そうそう、ターミナルのロケールに UTF-8 を設定している場合、perldoc と nroff では、コードに含まれるシングルクォートやダブルクォートが UTF-8 の全角文字に変換されてしまい、ペーストしても動かない という問題があります。ちょっとバッドノウハウ気味ですが、perldoc に -t オプションをつけていつもテキスト表示するか、一時的に LANG 環境変数を無効化することで対応しています。

% alias perldoc
env LANG=C perldoc

次は sekimura さん。