- 2004-04-09 (金)
- Perl
ここ数年、大半の開発を perl5.003 環境下にて行ってきました。jpatch があたっているので日本語文字周りの配慮は一切不要なのは便利ながらも、自分的にそれ以上に痛いのが
CPANモジュールが使えない場合が多い
という点です。何故なら、後継バージョンにて採用されたスクリプト記述ルールを使って書かれているソースを version 5.003 で解釈(compile)出来ないから。具体例を1つ挙げると、HTML::Template があります。一番古いバージョンである 2.0 でも perl5.003 環境では使えません。何故かと言うと、ソースの至る所にこんな記述があるからです:
foreach my $x (@hoge){ .. }
こう書くと perl5.003 は
Missing $ on loop variable at - line 1.
と怒ります。ループ変数 $x に my 宣言を記述しても良くなったのは perl5.005 からのようで。5.003 環境では
my $x; foreach $x (@hoge){ .. }
と書いてあげる必要があります。例にあげた HTML::Template をどうしても 5.003 環境で使いたいなら上記のような記述部分を全部置換してあげれば動くのでしょうが、そんなイレギュラー処置をしてまで仕事で HTML::Template 使うのはどうかと思い、この時は断念しました。
そんな感じで、未だに仕事面では CPAN にお世話になれずにいる自分。
この件が原因でループ変数に my 宣言をつける事を嫌うようになってしまった自分。
use encoding 'euc-jp', Filter=>1 とか言われてもいまいち追いついていけてない感がある自分。
- Newer: XML::Parser と encoding指定について
- Older: 今日の茶豆