キーワード  
CGI  Perl  2017年02月08日 13:12   編集
Perlアップデートとjacode.pl
perlのバージョンが新しくなったらCGIが動かなくなったという書き込みがサポート掲示板にあった。
Perl5.24ということだが、ローカルでCGIのテストに使っているXamppは最新版でもPerlのバージョンはは5.16なので、5.24での動作が確認できない。

Perlを5.24にアップデート

単体ではWindows用ActivePerlの5.24が公開されている。
Xamppの環境でこのActivePerlが使えるのかわからないが、取りあえずインストールしてみる。
XamppでPerlがインストールされているC:\xampp\perlに直接インストールしたいところだが、ダウンロードしたActivePerlのインストーラーはインストール先を変更できないようだ(それとも見落としたか?)
また、64bit版のインストーラーを使ったので、C:\Perl64というフォルダにインストールされてしまう。
取りあえずこれをXamppでインストールされたC:\xampp\perlフォルダにコピーすることにする。C:\xampp\perlは別名に変更してバックアップしておき、C:\Perl64の中身をすべてC:\xampp\perlにコピーしてみた。
これだけでうまくいくはずないよなと思ってCGIを実行してみると、あっさりと動いてしまって拍子抜けした。
print $];
でPerlのバージョンを確認してみると、無事
5.024001
と表示され、5.24にアップデートできたことが確認できた。

jcode.plのエラー

Perlをバージョン5.24にアップデートできたので、エラーが出るというCGIを実行してみると確かにエラーが出て実行できない。
エラーログを見てみるとjcode.plで
Can't use 'defined(%hash)'
というようなエラーが出ているようだ。確かにこの日本語変換ライブラリのjcode.plはかなり昔に書かれたものなので、最新のPerlで動かなくなっても不思議ではないかもしれない。Kent-Webなどで公開されているCGIを見てみるとjcode.plの後継ライブラリというjacode.plが使われているようだ。

jacode.plに更新

CPAN http://search.cpan.org/~ina/jacode/で最新版が公開されているようなので、
ダウンロードする。このうちjacode.plをjcode.plに置き換えればいいようだ。jcode.plを使っていたCGIでは
require './lib/jcode.pl'
というようなjcode.plを読み込んでいる部分を
require './lib/jacode.pl'
に変更する。
そのまま互換性があるのかよくわからないが、とりあえずエラーは出なくなった。
調べてみると同じ原因でエラーが出るCGIがけっこうあったので、すべて更新する必要があるようだ。
counter:5,235