Perl のバージョンが 5.10 くらいまでは jcode.pl 同梱された CGI を使うことも多かったようですが、もう最近ではあまり見なくなりましたね。
サーバーに入っている Jcode.pm を使うのが普通だと思いますが、お客様のサーバー移転のために色々調査していて久しぶりに見かけました。
Perl のバージョンが 5.16 くらいに上がるとエラーを吐くようです。
うーん、どうしたもんか・・・。
defined(%hash) is deprecated at jcode.pl line ~
ネットに修正方法があったので、ポイントを転記しておきます。
どのサイトでも同じことを書いてますが、該当箇所はここ。
sub z2h_euc サブルーチン内 &init_z2h_euc unless defined %z2h_euc_inited; sub z2h_sjis サブルーチン内 &init_z2h_sjis unless defined %z2h_sjis_inited;
いずれも、”unless defined %~” というのを使っています。ここがポイントです。これが引っかかっていますので、書き方を修正します。
修正は簡単で、”unless defined %” → “if !%” に書き換えるだけ。
sed コマンドでワンライナーでいけます。
sed -i "s/unless defined %/if \!%/g" jcode.pl