Perlの学習コスト高いよね、て感じのエントリが目立つのでふと思い返してみると、ぼくは1年前は 救命病棟でいうところのレベル4くらいでした。変数に our をつけると、どう違うのかわかなかったりしたのを覚えてます。
その後1年、今はレベル8弱ってとこでしょうか、自称ですが。バグレポートはなるべく出すようにしていますが、車輪になりそうで、モジュールは上げてません。
この1年どうやってレベルを上げてきたかなといえば、CPANあさり、これに尽きますw。で、これから Perlやるぞって人にもしかして参考になるかもしれないので、ぼくがやってきた自己流の漁りかたを書いておきます。
miyagawa さんが以前 WEB+DB PRESS で連載していた Perl Style というのを、総集編マガジンで今も入手可能です。
これはロギングとかORマッピングなどの基本的題材を、最初に“スクリプトっぽい”Perlで書いたのち、少しずつ CPANセントリックなPerl (=現代的Perl) に書き換えていくというわかりやすい良記事です。時期が古いこともあって使われているモジュールは必ずしも今風ではないのですが、CPANモジュールの使い方(置き換え方)のコツがつかめます。
プログラミングPerl volume2の31章でプラグマモジュール(strict, warnings, lib, base など)をおさえ、32章で標準モジュールの主だったものをおさえる。
検索の入り口として CPAN Suggest か 最速CPANサーチ を使わせてもらうと便利です。
これかな?というモジュールを開いてするのは、
という感じ。
このあたりで気づきたいのは、Perl の世界の公用語は英語であるということ。例えばJavaとかのウェブ系プログラマが、自分で書かなくてもHTMLやCSSを読めた方がよいのと同じ。
Perl界ではドキュメンテーションやバグレポートの公用語として英語が使われる。だから話せなくていいし英辞郎片手でよいから、英語を読むことをあきらめない。
というかCPANモジュールの英語は基本ソースの説明なので、そんなに難しくない。書いているのもみんながみんなネイティブの人じゃないしね。
で、search.cpan.org に慣れるてくると、けっきょくどれがベストプラクティスなのかわからないよ、ってことになってくると思うので、そこは先人の結論をいただく。
Perl Advent Calendar というページがあって、そこで紹介されているモジュールはPerlハカーの間で評価が高いものということみたい。(けっこうここで面白いのみつけたんだけど、なんか今見れない。キャッシュ探して見てください)
The Phalanx 100 これは質の高いモジュール100ということらしい。
Perl Best Practices は、読まなきゃ損。洋書だけどだいじょうぶ。細い字がだめなコードで、太い字が良いコード。そんだけ。巻末にレコメンドモジュール集が付いてる。
追記:和訳も出ました。Perlベストプラクティス いまからPerlやる人に取って、すばらしい時代ですね。
*.perl.org の サブドメインをもって大々的に開発し始めたものは今後の主流になっていくモジュールらしい。例えば、DateTime や Imager とか。どれも包括的だし、名前空間が考えられてる。Imager、0.46以降 EXIF サポートしてすごい良い感じ
Shibuya.pm とかでスピーカーをやったりする人のブログや、BookmarkをRSSリーダに登録する。そうすると必然的に、Catalyst や Plagger が盛り上がっているのがわかるので、そういったコードを読んでどんなモジュールをどんな風に使っているのか知る。
リンクは貼らないけど、個人のSubversionリポジトリを公開している人がけっこういるので、そういうのを拝見するのも参考になります。
CPAN Recent typesterさんに感謝しつつここのRSSを登録する。
自分が使っているモジュールのUPDATEはもちろんチェック。あと知ってる author のモジュールはチェック。特に YAPC でスピーカーやっていたような人のは要チェック。
そして見ず知らずのモジュールについては、ジャケ買いならぬ、単語買いをする。どんな単語がおすすめかというと・・
Perl界では「かっこよい」とされる英単語がJavaとかRubyとかとはちょっと違う気がする。ある構造なり機能そのものを正確に表現した単語より、短くてウィットに富んだ単語が好まれる(と思うのはぼくだけかなあ?)。そんな単語を見つけたら要チェック。例えば Sweet とか Euclid そういう単語
あと、「簡単」という意味の単語をつけてくる奴も良いモジュールが多い。具体的には、Simple、Easy、Lite、Fast、そういうのを見つけたら要チェック。
最後にこれはちょっと難しいけど、トップレベルで繰り出してくる奴には、とんがったモジュールが多い。なんとか::なんとか じゃなくてそれこそ、Plagger とか Catalyst とか。まあ当たりはずれあるけど。
トップレベルっていえばこの前 Interpolation っての見つけたけど、これどうなのかな。何かおもしろい使い方できそうな気がするような、しないような
このエントリへのTrackBackアドレス
http://e8y.net/mt/mt-tb.cgi/117
[memo][perl]CPANの漁りかた
CPANの漁りかた ためになりそう。書き捨てperlスクリプトや、既存のperlスクリプトの改編はやるけども、ゼロからある程度の規模かつメンテ可能なもの...
PHPの場合、関数の説明が標準のマニュアルに結構入っていて、探そうとすれば見つかるけど
Perlの場合CPANで存在が見つからないとその関数は自作するしかなくなってくる→習得が大変
ってなってました。
この記事役に立ちそうです。