由于我的 linux 电脑 ibus 输入法经常消失
use strict; use warnings;#gb2312 simplified chinese input;Terminal PERL perl
open(my $ri, "<bgb2.csv");
my @mkey = ();
my @mvar = ();
while (<$ri>) {
my $ln = $_; chomp($ln);
my @lnx = split(',',$ln);
if ($lnx[scalar(@lnx)-1] eq ""){ pop(@lnx);}
if (scalar(@lnx) > 0) {
my $hkey = $lnx[0]; shift(@lnx);
push(@mkey, $hkey); push(@mvar, \@lnx);
}
}
close($ri);
if (scalar(@mkey) >= 1000){die("too many keys");}
print "ready\n";
my $unum = "";
my @ms = (); my $w = 0; my $j = 0;
while (1){
my $uip = <STDIN>; chomp($uip);
$j = 0;
while ($j < scalar(@mkey)){
if ($uip eq "x") {
pop(@ms);print join("",@ms)."\n";$j = 1000;}
elsif ($mkey[$j] eq $uip){
my $cur = $mvar[$j];
my @curvar = @$cur;
for ($w = 1; $w <= scalar(@curvar); $w += 1 ){
print $w."'".$curvar[$w-1]." ";
}
print "\n";
$unum = <STDIN>; chomp($unum); #print "[".$unum."]\n";
if ($unum eq "n"){$j += 1;} elsif ($unum eq "q"){$j = 1000;}
elsif (index("012345678910111213141516", $unum) > -1) {
push(@ms, $curvar[int($unum)-1]); print join('', @ms)."\n";
$j = 1000;
} elsif ($unum eq "r") {$j -= 1;}
} else {
$j += 1;
}
}
}
bgb2.csv =
aa,啊,阿,埃,挨,哎,唉,哀,皑,癌,蔼,矮,艾,碍,爱,隘
aa,鞍,氨,安,俺,按,暗,岸,胺,案,肮,昂,盎,凹,敖,熬,翱
aa,袄,傲,奥,懊,澳
ba,芭,捌,扒,叭,吧,笆,八,疤,巴,拔,跋
ba,靶,把,耙,坝,霸,罢,爸,白,柏,百,摆,佰,败,拜,稗,斑
ba,班,搬,扳,般,颁,板,版,扮,拌,伴,瓣,半,办,绊,邦,帮
ba,梆,榜,膀,绑,棒,磅,蚌,镑,傍,谤,苞,胞,包,褒,剥
ba,薄,雹,保,堡,饱,宝,抱,报,暴,豹,鲍,爆
be,杯,碑,悲,卑,北,辈,背,贝,钡,倍,狈,备,惫,焙
be,被,奔,苯,本,笨,崩,绷,甭,泵,蹦,迸
bi,逼,鼻,比,鄙,笔,彼,碧,蓖,蔽,毕
bi,毙,毖,币,庇,痹,闭,敝,弊,必,辟,壁,臂,避,陛,鞭,边
bi,编,贬,扁,便,变,卞,辨,辩,辫,遍,标,彪,膘,表,鳖,憋
bi,别,瘪,彬,斌,濒,滨,宾,摈,兵,冰,柄,丙,秉,饼,炳
bi,病,并
bo,玻,菠,播,拨,钵,波,博,勃,搏,铂,箔,伯,帛
bo,舶,脖,膊,渤,泊,驳
bu,捕,卜,哺,补,埠,不,布,步,簿,部,怖
ca,擦,猜,裁,材,才,财,睬,踩,采,彩,菜,蔡,餐,参,蚕
ca,残,惭,惨,灿,苍,舱,仓,沧,藏,操,糙,槽,曹,草,厕,策
ca,侧,册,测,层,蹭
cha,插,叉,茬,茶,查,碴,搽,察,岔,差,诧,拆,柴,豺
~~~~~~