camel

ここに上がっているテクニックは、未だにときどき(確信犯的)に使(う|わざるを得ない中年プログラマーの弾です。

特に、

あとはパンチャーのおばさんにお菓子を持って行くのも、ひとつのテクニックです。

は、 s/パンチャー/プログラマー/g すると現在に至るも最強のテクニックで、我が妻がこの使い手だというのは我が家で hackerthon に参加された方は一人残らずご存知だと思います。

と前おいた上で、それのPerl編を。

以下、順不同で8つほど。

0. use strict;use warnings;なしでスクリプトを書く

やはり最初に書いておくべきでしょう。理由は以下を参照のこと。

もちろん一行野郎(one-liner)や、llevalとかcodepadとかで動かす snippet はその限りではありませんが。確信犯のみ反則OKといったところでしょうか。

1. local (@args) = @_;

これはもう無条件にNGですね。subの引数をコピーする時には、my (@args) = @_;ないしmy $arg = shift;で。local%ENVとか$\とか、グローバル変数をあえて局所化したい場合にのみ使います。

2. format()

これ、もう10年以上使っていないかも。かつてはPerlの「旧正式名称」である、 Practical Extraction and Report Language の R の部分に欠かせない機能でしたが、Unicodeとの相性も悪く、また R 担当のモジュールが今や CPAN にあふれまくっている昨今、存在を忘れても問題ないでしょう。

3. CORE::dump()

実メモリーの消費量を調べるときぐらいしか用がない。現代的にはYAMLJSONなどの serializer が Load() の対語として Dump() を使っていたりしますね。

4. require jcode.pl;

日本語環境限定ではありますが。さすがに旧すぎる上、Unicode未対応という21世紀的に致命的な機能不足が。use Encode;してくだちいm(_._)m

5. require cgi-lib.pl;

4.と同様。use CGI;またはフレームワークをご利用くださいませ。

6. socket()などを直に使う

IO::Socket()など、モジュール経由で使いましょう。似たようなものに(get|set)pw*などがあります。Perl 4との互換性のことを考えなければ、はじめからモジュールになっていたと思われます。

7. CPANをシカトする

項目がいくつあっても、シメはこれで決まりでしょう。何かやりたいとき、まずはCPANに同様のことをやるモジュールが上がっていないかをチェックするのは、21世紀の Perl Monger のたしなみです。

CPAN is the language. Perl is just a syntax. -- C. L. Kao

もちろん、自習のためにあえて車輪を再発明するのは多いにありですし、1.の場合と同様「確信犯のみ反則OK」ルールが適用されますが。

まだいっぱいありそう。残りは他の Perl Mongers におまかせします。

Dan the Perl Monger