ローマ字を仮名に変換するための Perl ライブラリ。フィルタコマンドと して実行することも可能。
このライブラリは、元々 Unix Magazine の原稿を書くために作ったもので す。その後、若干仕様は変わっていますが基本は同じなので参考にはなると思 います。
require 'romkan.pl';
$kana = &romkan($roman [, CODE [, KATAKANA]] );
サブルーチン &romkan は、1番目の引数で与えられたローマ字文字列を平 仮名に変換した文字列を返す。文字列全体を変換することができなかった場合 には undef が返る。
2番目の引数で返ってくる文字列の文字コードを指定することができる。デフォ ルトは 'euc' であり、他に 'jis' と 'sjis' を指定することが可能。
3番目の引数に真の値が指定されると、平仮名ではなく片仮名の文字列を返す。 片仮名の指定だけをして文字コードを指定しない場合には、2番目の引数には undef を指定する。
##
## 先頭から空白行までを除き、ローマ字に変換可能な単語を変換して出力する
##
require('romkan.pl');
while (<>) {
s/([\w\-\']+)/&romkan($1)||$1/ge unless 1 .. /^$/;
print;
}
a あ i い u う e え o お ka か ki き ku く ke け ko こ ga が gi ぎ gu ぐ ge げ go ご sa さ si し su す se せ so そ za ざ zi じ zu ず ze ぜ zo ぞ ta た ti ち tu つ te て to と tsa つぁ tsi つぃ tsu つ tse つぇ tso つぉ da だ di ぢ du づ de で do ど na な ni に nu ぬ ne ね no の ha は hi ひ hu ふ he へ ho ほ fa ふぁ fi ふぃ fu ふ fe ふぇ fo ふぉ pa ぱ pi ぴ pu ぷ pe ぺ po ぽ ba ば bi び bu ぶ be べ bo ぼ ma ま mi み mu む me め mo も ya や yu ゆ yo よ ra ら ri り ru る re れ ro ろ wa わ wi ゐ we ゑ wo を kya きゃ kyi きぃ kyu きゅ kye きぇ kyo きょ gya ぎゃ gyi ぎぃ gyu ぎゅ gye ぎぇ gyo ぎょ sha しゃ shi し shu しゅ she しぇ sho しょ zya じゃ zyi じぃ zyu じゅ zye じぇ zyo じょ ja じゃ ji じ ju じゅ je じぇ jo じょ jya じゃ jyi じぃ jyu じゅ jye じぇ jyo じょ tya ちゃ tyi ちぃ tyu ちゅ tye ちぇ tyo ちょ cha ちゃ chi ち chu ちゅ che ちぇ cho ちょ dya ぢゃ dyi ぢぃ dyu ぢゅ dye ぢぇ dyo ぢょ tha てゃ thi てぃ thu てゅ the てぇ tho てょ dha でゃ dhi でぃ dhu でゅ dhe でぇ dho でょ nya にゃ nyi にぃ nyu にゅ nye にぇ nyo にょ hya ひゃ hyi ひぃ hyu ひゅ hye ひぇ hyo ひょ pya ぴゃ pyi ぴぃ pyu ぴゅ pye ぴぇ pyo ぴょ bya びゃ byi びぃ byu びゅ bye びぇ byo びょ mya みゃ myi みぃ myu みゅ mye みぇ myo みょ rya りゃ ryi りぃ ryu りゅ rye りぇ ryo りょ xa ぁ xi ぃ xu ぅ xe ぇ xo ぉ xwa ゎ xtsu っ xtu っ xya ゃ xyu ゅ xyo ょ n' ん n ん - ー
変換テーブルは、$romkan'romkan_table という変数に定義されています。 romkan.pl を require する前に $romkan'romkan_table が設定されていると、 それが優先されます。デフォルトの変換ルールを変えたい場合には、ファイル からその部分をコピーして変更してください。
変換は文字列の先頭に対して行われ、ルールの先頭から順番に適用されま す。順序を変更すると、思ったように動作しなくなることもありますので、注 意してください。行の先頭に対して、どのルールも適用できなくなると、変換 を中止して失敗します。
プログラムは極めて短いので (処理部分は27行)、プログラム自体を変更し て利用するのも容易です。ただし、変換ルーチンは動的に生成して eval で評 価されるので、直接変更することはできません。どのようなルーチンが評価さ れているかを知りたい場合には、romkan.pl をコマンドとして -debug オプショ ンを付けて実行してみてください。
ライブラリとして使うことを目的として作られていますが、単独のコマン ドとしても動作します。たとえば、
% romkan.pl fileと実行すると、file の中のローマ字を仮名に変換して出力します。変換はワー ド単位で行い、うまく変換できない場合にはそのまま出力します。
出力コードを指定することも可能で、-jis, -euc, -sjis のように指定します。
出力を平仮名ではなく片仮名で表示したければ -katakana オプションを指 定できます。
ファイルを標準入力にリダイレクトすると、パラグラフ単位で処理し、元 の文章も同時に出力します。ちょっと変な仕様ですね。どうしてこうしたのか は忘れてしまいました。ローマ字で書かれたメールを見るときにはちょっと便 利です。
% romkan.pl < ローマ字メール
これは元々テスト用に付いている機能で、処理しているのは最後の10行程 度の部分なので、これをコピーして好きなように改造して使ってください。オ プションの処理は先頭の perl -s で行っています。
if (__FILE__ eq $0) { # test main
package main;
print $romkan'sub_romkan if $debug;
$/ = '' unless -t STDIN;
$code = $jis ? 'jis' : $euc ? 'euc' : $sjis ? 'sjis' : undef;
while (<>) {
print unless -t STDIN;
s/([\w\-\']+)/&romkan($1,$code,$katakana)||$1/ge;
print;
}
}
-debug オプションを指定すると、中で実行されるサブルーチンを表示します。