January 7, 2006

Jcodeのメモと久しぶりのPerlデビュー

実は、初めてのPerlのエントリー。つか、普段からPerl使わないし。でも、使っているレンタルサーバでは、CGIの使用は許されているので、Perlを使ってみることにする。PHPはダメ動かなさそう。

つか、そもそもCGIが動くと聞いているだけで、厳密にはperlだけとは限らないような気もするが、rubyでもCでもpythonでも、PHPでも、shでも、他の言語でもCGIスクリプトを書けばいいだけだが。

ええと、話がそれた。
ちょっと今簡単なスクリプトを書いているのよ。で、PHPでやれば速攻なのだが、ちょっとブログに組み込もうかな、と思って、あと、ちょっと気分転換をするためにPerlをいじっちゃったりしているわけ。で、私も日本人なので、日本語を使用せなあかんのよ。むかーし、Perlを使っていたころは、jcode.plを使用していたけど、最近は、Perlな世界にもOOPが流行りつつあるようで、CPANモジュールのJcodeを使用してみた。
まだ、深く読んでいないけど、ドキュメントは以下の通り。
Jcodel

でね。
コンストラクタで、

    $j = Jcode->new($str [, $icode]);

とか書いてあるんだけど、これって$icodeを書かなくてもいいってことだから、書かなかったのよ。そしたら、なんか特定の文字で、文字化けしているんだね。
ソースでは、

    my $phrase = Jcode->new($params{'phrase'})->euc;

って感じでやってたら、「よう」とか、難しい漢字とか化けちゃって変換されないの。まぁ、PHPのmb_detect_encodingのも文字コードの判別にバグがあるから、こっちもあるのかな、って思って少しばかりあきらめつつ、ドキュメント読んでみたら、どの文字コードからということで、$icodeを指定できたので、次のように変更したらできた。

    my $phrase = Jcode->new($params{'phrase'},'utf8')->euc;

うーん。なるほどね。自動判別だとばかり思っていたけど、ちゃんと書かないといけないのね。

しかし、久しぶりにPerlを触るとなんだかめんどくさいね。PHPに慣れちゃって。昔なんて汚いコード書いていてCPANなんて使ったことなかったけど、せっかくライブラリあるし、自分で書くより洗練されているから使った方がいいよね。でも、なんだかPHPのPEARとPECLの両方の側面を持っていて、ちょっと嫌。Pure Perlで書かれたものでないとインストールで躓いちゃうから。

自分のサーバならインストール楽だけど、レンタルサーバだからインストールできなくて、FTPしか使えないかし。。。いくつかは、Pure Perlで書かれていて、パスが通るところに置けば動くみたいだけど、結構使いたいなぁ、と思うのは、ダメだったりするのだ。つーか、PHPのPEARだったら、インクルードパスに全部置いちゃえば、そこで使えただけに、ちょっとCPAN使いにくいなぁ、と思ってみる。ほとんど使ってないから、知らないだけかも。

なんかいろいろ調べてて、perlで定数ってどう書くのかな、って検索してたら見つけた。
Perl メモ
定数関数、シンボルテーブル、constants.pmとあったけど、まぁ、使うなら定数関数か。。。

sub GIVEN_NAME  {'shin'}

みたいな感じだって。きもっ!subってのが、なんか気になる。。。
ちなみに、勢いでオブジェクト指向で書くのやっちゃった。packageの中で普通に関数を作ればいいだけなのね。
blessでハッシュのリファレンスを返すところは、なんか変な感じがしたが。

Leave a comment

Bloglines feedburner