理系学生日記

おまえはいつまで学生気分なのか

YAPC::Asia 一日目

参加した全セッションのメモを取ろうと思ってたんですが、きっと動画共有サイトにアップロードされるに違いないし、だれかがはてダにエントリ起こすだろうし、そもそも Mac の電源がもたないし、メモとるのメンドくなってきたしで最初のセッションしかメモとれてないです。 **モダンな Perl5 開発環境について - Modern Perl5 Development Environment - 2010 年代を生きのびる Perl 5 活用術

***perl5 version:

OS 標準の perl を使っている (system perl) のはよくない。-Dusethreads がついてコンパイルされている(ithreads) のがよくない。Web アプリを書くときには off にしておくほうが良い。それだけで速度が 15% 高速化される。 perl 5.10.0 は、正規表現を使ったときの memory leak や バグが多いのでよくない。基本的には perl 5.x.0 は新規機能の導入などによってまだ枯れていないことが多く、クオリティが高くないため、本番環境で使うのは避けた方が良い。今だと perl 5.12.2 を使うのが吉。安定志向なら 5.8.9 でも良い。perl 5.10 系以降では、given/when や say、smart match operator、defind or operator, named capture を使える。 また、好きな version の perl をつかうためには、perlbrew が便利(ソースを wget して make してもあんまり変わらないけれど)。

***cpanm cpanm はメモリ使用量が少ないしよい。使わない理由がない。インストールも簡単。 -no reloading index -no configuration -no dependencies 依存モジュールをインストールするときは

|tcsh| $ cpanm --installdeps . ||< local::lib を使って特定ディレクトリにライブラリをインストールしたいときは |tcsh| $ cpanm -l extlib/ Acme::Damn or $ cpanm -l extlib/ --installdeps ||<

***cpan-outdated インストールしたモジュールが古くなった場合が問題。最新版をつかいたいという場合、自分が持っているモジュールのうちどれが古いのかを判断するときに使う。cpanm と組み合わせると便利。

|tcsh| $ cpan-outdated -l extlib/ | cpanm -l extlib/ ||< 自宅サーバとかで cron で回すと便利。

***cpanf cpanf の f は fresh の f。 CPAN モジュールはミラーの速度が少し遅い。伝搬するまでの間、使えなかったりする。一番最初にミラーされたミラーから取ってこれる。-m は cpanm を使ってインストールするオプション。

|tcsh| cpanf -m Acme::Damn ||<

***pm-uninstall モジュールのインストールが一発でアンインストールできる。

|tcsh| $ pm-uninstall -l extlib/ Acme::Damn ||<

***deployment perl5 のディレクトリを rsync するのがお勧め。 アプリケーション特有なものは、extlib に入れておいて rsync するのが一番楽なのではないか。

***CPAN モジュールの選び方

みんながつかっているモジュールを使えばいい。ともだちに聞けない人は以下の IRC チャネルで聞くと、スゴい勢いで Perl Monger が教えてくれます。

perl-casual@irc.freenode.org

Twitter には @perlism っていう bot がいて、JPA の牧さんがかけつけてくれる。

あるいは、有名 Perl Hacker が使うモジュールを使うのもあり。自分で選ばないで済むなら、その方がいい。 Task::BeLike::{BINGOS,RJBS,FLORA,DOY,Tokuhirom}

***まとめ みんながんばって Perl5 をつかいやすくしようとおもって頑張っているのでどんどんその恩恵をうけましょう。Perl is undead。