Windows版のPerlであるActivePerlをインストールすると、WSH上で動作する言語エンジンの一つであるPerlScriptが使えるようになる。これによって、サクラエディタのマクロをPerl構文で書けるので重宝している。
ただし、PerlScriptには日本語処理に関するバグがある。文字数とバイト数の区別がごっちゃになっているために、スクリプト内に日本語が入っていると、その分だけスクリプトの最後のほうが読み込まれなくなるらしい。何年も前からバグ報告されているようだが、最近のバージョン(ActivePerl 5.16.1)でも状況が変わっていない。
現象や対策について書かれている記事をいくつか引用しておく。
[URL]
[URL]
[URL]
[URL]
その場しのぎには、スクリプトの最後に、切り落とされてもいい文字列を多めにパディングしておけば誤魔化せることが多い。
もっと確実に動作させるには、require()関数で日本語混じりスクリプトを外部ファイルとして読み込めばよい。そのようなrequire()関数の入ったファイルを自動生成するPerlスクリプトを書き、pl2bat.batでバッチファイルに変換し、ドラッグ&ドロップで処理できるようにしている。
なお、これはPerlScript(拡張子.pls)で生じる問題であり、Perl本体(拡張子.pl)では問題ない。PerlScriptを使い始めの頃、この問題でかなりつまずいた記憶があるが、アドホクとはいえバグ回避方法があるので使い続けている。
セコメントをする