MacJPerl 5のドロップレットをMac OS Xのperlに移植する

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。

続きの情報は、翌日のブログへ。

このブログ記事について

このページは、shigetaが2008年10月14日 15:06に書いたブログ記事です。

ひとつ前のブログ記事は「Red Cats」です。

次のブログ記事は「MacJPerl 5からMac OS Xのperlへの移植、つづき」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。