Perlでアプリケーションをささっと書くのに役立つTips
@Cside_ です。Perlを書き始めて3年ほど経ち、Perlで何か作る際の効率化の手法がそれなりに確立してきたので、それを思いつくままに紹介しようと思います。主に多言語から来てPerlにほどんど慣れてない方などを想定しています。
覚えにくい/タイプ数の多い イディオムはコードスニペット化する習慣をもつ
たまに使うけどすぐ忘れるイディオムとか、よく使うけどやたらタイプ数の多いイディオムってありますよね。たとえば
- Test::Baseを使ったテストの書き方
- DBIのメソッドのusage。selectrow_なんちゃらrefとかselectall_なんちゃらrefとか
など。こういうのはコードスニペットとして保存しておいて、必要なときすぐ呼び出せるようにショートカットを割り振っておくと良いです。同じイディオムを2回以上調べたり、タイプするのだるいなーと思った瞬間に即スニペットに登録するようにすると良いでしょう。
コードスニペットの登録 + 呼び出しを具体的にどうやって実現するかですが、neosnippetというVimプラグインを使うと良いです。以下のエントリが参考になります。
Vimのsnippetについてあまり知らなかったので設定してみたら便利過ぎてつらい - 僕の車輪の再発明
スニペット設定例も貼っておきます。
https://github.com/zentooo/rc/blob/master/.vim/snippets/perl.snip
quickrun.vimでPerl用に便利な設定
quickrun.vim は編集中のファイルをVimを起動した状態のまま実行できるVimプラグインです。かなり浸透してるので解説の必要はなさそうですが、それにしても毎度毎度Vimを抜けてシェルに戻る手間が省けるのはたいへん楽ですね。
で、なんですが、編集中の.pmや.tファイルをquickrunしたら、プロジェクトの lib/ や t/lib にパスが通ってなくて「Can't locate...」と怒られてた経験は誰にでもあると思います。そういうときは .vimrc の設定に以下を書き足すと良いです。
let g:quickrun_config = {} let g:quickrun_config.perl = {'command' : 'perl', 'cmdopt': '-MProject::Libs' }
Project::Libsはプロジェクトの lib/ や t/lib/ を探しだして実行パスに含めるモジュールです。こいつをquickrun実行時にuseしてやればいいというわけです。
CPANモジュールガイドはとりあえず読んでおく
どんなコードもメンテされる限りコストになるわけで、書かなくていいコードを書かないことは大きな効率化です。うっかり車輪の再発明をしないために、CPANモジュールガイドを読んで基本的なモジュールをおさえた経験は、その後たいへん役に立ちました。
Amazon.co.jp: Perl CPANモジュールガイド: 冨田尚樹, タナカユカリ: 本
この本では多彩なジャンルのデファクトスタンダードなモジュールがおさえられています。「このケースではこういうモジュールを使えばいいのかー」というマッピングを頭に作っておくことで、未来で必要になったときに車輪の再発明をせずに済むというわけです。
まとめ
期せずして半分以上Vimの話になってしまいましたがこんな感じです。ツッコミや、他にもこんなことすると捗るよ! というのがありましたらコメントもらえると嬉しいです。
More?
- watchdogs.vim で Project::Libs でよしなに
- 保存時にシンタックスチェックをする話
- VimでPerl(に限らないけど)を書くときにこれだけはやってほしい設定 #Perl #Vim - Qiita
- 自分のおすすめVim設定
- Perlで補完のきくインタラクティブシェル - Cside::Weblog
- RubyでいうpryのPerl版
- この記事で書き忘れましたがソースコードの中でREPLするには Carp::REPL というモジュールが使えます