为大家介绍perl的一个好玩的模块,它可以使中文转换为全拼音的,而且还能加入拼音的音节呢。
cpan上的东西,如果你愿意尝试,那真是个宝贝多多的神圣之地,哈。。。
需要安装的模块:
Lingua::Han::PinYin
例子:
#!/usr/bin/perl
use Lingua::Han::PinYin;
my $h2p = new Lingua::Han::PinYin();
print $h2p->han2pinyin("我"); # wo
my @result = $h2p->han2pinyin("爱你"); # @result = ('ai', 'ni');
# 可以得到拼音的声调,比如下面的 "我" 是3声,则有下列的显示
my $h2p = new Lingua::Han::PinYin(tone => 1);
print $h2p->han2pinyin("我"); #wo3
my @result = $h2p->han2pinyin("爱你"); # @result = ('ai4', 'ni3');
print $h2p->han2pinyin("林道"); #lin2dao4
print $h2p->han2pinyin("I love 余瑞华 a"); #i love yuruihua a
以上示例就是直接照抄的原方法。
下面来看我自己写的一个例子吧。
将文件里面的歌曲和歌手的2个字段的第一个字母输出来:
#!/usr/bin/perl
use Lingua::Han::PinYin;
open OUT,'你想要处理的文件' or die "$!";
while ($file=<OUT>){
chomp $file;
my @data=split(/t/,$file);
$data1=$data[0]; #把每行的数据的第一列和第二列做拼音转换处理(歌曲和歌手)
$data2=$data[1];
my $h2p = new Lingua::Han::PinYin();
my $sum1=$h2p->han2pinyin("$data1");
my $sum2=$h2p->han2pinyin("$data2");
my $start_char1=substr($sum1,0,1); #取出全拼的第一个拼音字幕
my $start_char2=substr($sum2,0,1);
print '这是歌曲的第一个字符'."$start_char1n";
print '这是歌手的第一个字符'."$start_char2n";
}
close OUT;