Perlでカタカナひらがな変換
2006-08-07-5
[Programming]
Perlでカタカナひらがな変換をやろうと思ったら、
Unicode::Japanese を使うのが手軽なのかな。
- 山科 氷魚 / Unicode-Japanese - search.cpan.org
http://search.cpan.org/dist/Unicode-Japanese/
とりあえず使うことにしてみた。
以下、適当なサンプルプログラム。
追記060808:
subtechグループ - Bulknews::Subtech - [Perl]
http://subtech.g.hatena.ne.jp/miyagawa/20060808/1154963176
perl v5.8.8 で以下のスクリプトで確認。
ところで、「ヴ」はどうしたものか、と思っていたらこんなコメントが。
http://b.hatena.ne.jp/entry/
http%3a//nais.to/~yto/clog/2006-08-07-5.html
(上だと「?」になっちゃってます)。
Unicode::Japanese でも扱ってないみたいだし、まあいいか。
手軽な方法があって安心しました。情報ありがとうございました。
ただ、すべての開発環境の emacs で utf-8 が使えるようになっていない
ので、ソースを utf8 化するのはもうちょっと先になりそうです。
最近やっと perl 5.8.x が常用できる環境になったろころで、
utf8 まわりの(バッド)ノウハウはこれから吸収していきます。
Unicode::Japanese を使うのが手軽なのかな。
- 山科 氷魚 / Unicode-Japanese - search.cpan.org
http://search.cpan.org/dist/Unicode-Japanese/
とりあえず使うことにしてみた。
以下、適当なサンプルプログラム。
#!/usr/bin/perl # 入力はEUC-JPのTSVで住所とその読み仮名(カタカナ)。 # 出力はUTF-8のTSVで住所とその読み仮名(カタカナ+ひらがな)。 use strict; use warnings; use Unicode::Japanese; while(<>) { chomp; my @col = split("\t", $_); my $addr_str = Unicode::Japanese->new($col[0], 'euc-jp')->get; my $yomi = Unicode::Japanese->new($col[1], 'euc-jp'); my $kata_str = $yomi->get; my $hira_str = $yomi->kata2hira->get; print "$addr_str\t$kata_str\t$hira_str\n"; }
追記060808:
subtechグループ - Bulknews::Subtech - [Perl]
http://subtech.g.hatena.ne.jp/miyagawa/20060808/1154963176
Unicode 文字列にして、普通に tr/// でやればいいような。なるなる。
perl v5.8.8 で以下のスクリプトで確認。
#!/usr/bin/perl use strict; use warnings; use utf8; binmode STDOUT => ":utf8";my $str = "ョヮィ・シックス・アパート"; $str =~ tr/ァ-ン/ぁ-ん/; print $str,"\n";
ところで、「ヴ」はどうしたものか、と思っていたらこんなコメントが。
http://b.hatena.ne.jp/entry/
http%3a//nais.to/~yto/clog/2006-08-07-5.html
2006年08月08日 kitsううう、「う゛」が一文字になったやつ(\xE3\x82\x94)が入力できません
use Jcode; use utf8; jcode($str)->tr('ぁ-?', 'ァ-ヴ'); を考えました。
(上だと「?」になっちゃってます)。
Unicode::Japanese でも扱ってないみたいだし、まあいいか。
手軽な方法があって安心しました。情報ありがとうございました。
ただ、すべての開発環境の emacs で utf-8 が使えるようになっていない
ので、ソースを utf8 化するのはもうちょっと先になりそうです。
最近やっと perl 5.8.x が常用できる環境になったろころで、
utf8 まわりの(バッド)ノウハウはこれから吸収していきます。