CPAN モジュールがインスコされたパスを調べる時 - にぽたん研究所

August 11, 2005

このエントリーをはてなブックマークに追加
いつも、インスコした CPAN モジュールの .pm ファイルがある場所を探すのに、今までいい方法が思いつかずに
% perl -MDBIx::Class -e'print $INC{"DBIx/Class.pm"}, "\n"'
こんなんしてたわけだが、よくよく考えたら、こんな方法でイケることに気付く。
% perldoc -ml DBIx::Class
あぁぁ、今まで同じ結果を求めるために、なんであんなに苦労していたんだろう…。

ちょっと .pm を書き換えてみたい時とかも
% sudo $EDITOR `perldoc -ml DBIx::Class`
いや、こんなんすればいいなんてラクだ…。

これって常識なのか?
知らないおいらが非常識??

上記例のようにさ、DBIx::Class みたいな「そんなに長くないモジュール名」ならいいですよ。
でも長いと、そりゃもうウンザリっすよ。
% perl \
  -MCGI::Application::Plugin::AnyTemplate::Driver::HTMLTemplateExpr \
  -e'print \
  $INC{"CGI/Application/Plugin/AnyTemplate/Driver/HTMLTemplateExpr.pm"}, \
  "\n"'
嗚呼、ウンザリ。

これに比べて、さっきの方法ならホラ!
% perldoc -ml \
  CGI::Application::Plugin::AnyTemplate::Driver::HTMLTemplateExpr


…いや…例えが悪い…悪過ぎた……。

まぁ、どちらにせよウンザリなのは間違いないですが、どうせウンザリしなくちゃいけないなら、楽なほうのウンザリを取りましょうってことで…。



2005-08-12 17:45 Update:

「-l だけで、-m オプションは要らんのでは?」の件について


コメントで台場圭一さんからコメント頂いていますし、その他 SBM あたりでも書かれてますので、一応コメント欄に書きましたが、こちらに追記しておきます。

-l だけでは、pod (plain old documentation) が記述されていない .pm ファイルの場合に
No documentation found for "ModuleName".
って怒られますし、.pod に分けて書かれているモジュールの場合は .pod の場所が表示され、どちらも .pm ファイルの場所が見付からないです。

なので -m で出る -l を知ればいいなと -ml にした次第です。

ちなみに、-m と -l を複合でオプションとして使う場合、perl 5.8.1 以降に付属している perldoc (Pod::Perldoc 版) でないとダメです。
only one of -t, -u, -m or -l
という風に怒られます。

てことで、コメントありがとうございましたの気持ちを込めてアサマシっておきますね。

PERLクイックリファレンス
エレン シーバー ネイザン パトワーダン ステファン スペインアワー Ellen Siever Nathan Patwardhan Stephen Spainhour 近藤 嘉雪 山本 浩 台場 圭一 イエローレーベル
オライリー・ジャパン (2000/03)
売り上げランキング: 154,657


達人に学ぶPerl/CGI道場
達人に学ぶPerl/CGI道場
posted with amazlet at 05.08.12
小飼 弾 マイクロメイツ
インプレス (2003/02)
売り上げランキング: 115,482


nipotan at 16:00 | Comments(9) | TrackBack(0) | 技術 
このエントリーをはてなブックマークに追加

Trackback URL for this entry

Comments

1. Posted by 台場 圭一   August 11, 2005 20:21
ExtUtils::Installed使ったらどうです?簡単なスクリプトを書いてみようと思ったら,「禁止ワード」だってはじかれてしまいました.(^^;
2. Posted by nipotan   August 11, 2005 21:01
「CPAN モジュールが」っていうタイトルで考えると、確かに正しく make を利用してインスコしたモジュールの詳細は台場さんの仰る ExtUtils::Installed でいけると思うんですけど、

% tar zxvf Some-PurePerl-Module-0.00.tar.gz
% cp -r Some-PurePerl-Module-0.00/lib/* .

こんなんしたやつとか、

% cat <<EOF > Foo.pm
package Foo;
1;
EOF

(まぁ、これじゃ CPAN モジュールとは呼ばないけど) こんなんしたやつは、current directory で use 出来るけど、ExtUtils::Installed 経由だと調べられないのが難儀だったので、

% perldoc -ml <ModuleName>

が素敵に思えた次第です。
3. Posted by    August 11, 2005 23:07
あら、今頃気がついたの :)
-f と -q は知ってるよね?
Dan the Perl5 Porter
4. Posted by nipotan   August 11, 2005 23:17
今頃気付きますた orz
-f と -q はさすがに知ってますね。
-f は週 1 回ぐらい使って、
-q は 3 ヶ月に 1 回ぐらい使ってます。

あと、perldocjp 用に翻訳する時は -uT とか使ったり、、、
5. Posted by 台場圭一   August 12, 2005 00:19
にゃるのど.

そういえば,perldoc で -m っていります? perldoc -l でいいような気がするんですが,間違ってるでしょうか.
6. Posted by nipotan   August 12, 2005 01:11
pod がちゃんと書かれている .pm なら -l だけでいいんですが、pod が書かれていない .pm の場合

% perldoc -l Foo::Bar
No documentation found for "Foo::Bar".

こんな風に -l だけだとコケちゃうんですよね。。。
ちなみに、perldoc が Pod::Perldoc で実装されている今のバージョンより前の perldoc だと、

% perldoc -ml Foo::Bar
only one of -t, -u, -m or -l

という風に怒られちゃうことも判明。。。
7. Posted by よしき   August 12, 2005 02:36
うっそ、これ知らんかった…orz
いつもlocateだたーよ…orz
8. Posted by BlogPetのにぽたん   August 12, 2005 10:45
にぽたんは、ネットでモジュールをウンザリしなかった?


9. Posted by 台場圭一   August 13, 2005 23:33
アサマシ,ありがとうございます.これからは,これが俺の本じゃっていうような本を書かにゃならんですなw

Post a comment

Name:
URL:
  Remember info?: Rate: Face    Star