perlを使うのに、MacJPerl 5のドロップレットは便利だった。
過去形なのは、Mac OS Xでは使えないから。
だから、perlを使うたびに、せっかくMac OS Xにはperlが標準装備されているのにClassicのMacPerl5を使うという、変なことになっていた。
で、思い切ってひとつ、Mac OS Xに移植してみることにした。
MacJPerl 5のドロップレットは、一太郎の吐き出したshift-JISのテキストを加工して、違うファイル名のshift-JISテキストに書き換えるというもの。
オリジナルの一太郎ファイルには、いわゆる機種依存文字があって、それを機種依存でない、shift-JISで使える文字に書き換えている。
そんな機種依存文字はそもそもマックでは読めないだろうから、その部分は妥協して、一太郎ではき出すときにUnicodeテキストで吐き出させることに変更した。
まず、ドロップレットをMacJPerlで開いて、エディターにコピー&ペースト。
不思議だが、JeditXにペーストしたら思い切り文字化けしたので、Jedit4にペースト。
この状態で、このperlファイルにも、Windowsな機種依存文字が含まれているから、その部分は文字化けしている。
もちろん、その部分は、MacJPerlでも文字化けしていたが、特に問題はなかった。なんだかんだ言って、昔は単純だったんである。
その機種依存文字が含まれているものを、Jedit4できちんとUTF8に変換できるとは思えなかったので、いったん保存。
このファイルをWindowsに持っていって、一太郎で開く。
それを今度はUnicodeテキストとして保存。
もういちどマックに持ってきて、JeditXで開く。
ここで文字コードを調べたらUTF-16だった(一太郎のUnicodeテキストはUTF-16らしい)ので、UTF-8にして、改行コードもLFにして、保存し直す。
拡張子は「.pl。」
以上でまずは、ファイルのコード変換終了。
新しくできたファイルを今度は、Mac OS Xのperlで読めるようにする。
頭に
#!/usr/bin/perl
use utf8;
use Encode;
の3行を追加。
いったんファイルを閉じて、ターミナルを起動。
ターミナルで
chmod 755
とタイプしてから、さっき保存した新しいperlファイルをドロップして、returnをタイプする。
このターミナルの作業と、さっき加えた「#!/usr/bin/perl」のおかげで、ターミナルからこのperlファイルが起動できるようになる。
(この作業がないと、いちいちperlと打たなければならなくなる)
ちなみに、さっき加えた2行目はperlの内部コードにUTF-8を使えるようにするもの、3行目はshift-JISが使えるようにするためのもの。
この2行で、JPerlのような仕事ができるようになる。
openの行を書き換える。
入力のほうは
open (ORIG, ‘<:encoding(utf16)', "$file");
出力の方は
open OUT, ‘>:encoding(shiftjis)’, $newfile;
(かっこはあってもなくても同じはずである。)
次に、改行コードの違いに対応する。
一太郎の吐き出したファイルは、CR+LF。
これをCRなMacJPerlで使えるようにするためには、LFをカットしていた。
s/\x0a//g;
ところが、Mac OS XのperlはLFなUnixだから、CRをカットするように書き換える。
s/\x0d//g;
これで、動く。
ところが、動かしてみると、いくつかのコードをshift-JISに変換できないというメッセージが出る。
「〜」と「-」の2文字。(他にも実はあるのかも知れないけれど、今回引っかかったのはこれだけ)
この2文字は、一太郎からshift-JISに出力すると変換して出力するのに、Unicodeに出力すると、shift-JISに変換できない方の文字コードを吐いてくるらしい。
仕方がないので、
tr/〜-/〜ー/;
の1行を追加。
….左と右とは、Unicodeでは文字コードが違う。
これで完成。
使い方
ターミナルを起動。
作ったperlファイルをターミナルにドロップ。
一太郎から吐き出した(変換したい)ファイルをターミナルにドロップ。
return。
続きの情報は、翌日のブログへ。