我一直在使用一些人几年前创建的10+程序,该程序输入日语文本(词汇表)和自定义kanji索引(如RTK或KKLC或2k1KO或Frequency),并根据该文本中最大的汉字索引输出日语文本。这个想法是把使用汉字的单词放在索引列表中的更低的词汇列表中。最近几个月,随着草莓的更新,该程序停止工作,并输出以下错误:
在C:/Strawberry/perl/lib/warnings.pm第377行vec中使用未初始化的值$mask。未知PerlIO层‘编码’在kanji-排序-1.5.pl第8行未知PerlIO层“编码”在C:/Strawberry/perl/lib/open.pm第120行。未知的PerlIO层“编码”在C:/Strawberry/perl/lib/open.pm第128行。未知的PerlIO层“编码”在C:/Strawberry/perl/lib/open.pm第129行。在C:/Strawberry/perl/lib/warnings.pm第412行vec中使用未初始化的值$mask。在C:/Strawberry/perl/lib/warnings.pm第424行按位和(&)使用未初始化的值$mask。名称“Getopt::Long::CallBack::重载”只使用过一次: C:/Strawberry/perl/lib/overload.pm第11行中可能出现的错误。未知的PerlIO层“编码”位于kanji-sort-1.5.pl第21行。在KANJI的关闭文件句柄kanji上的readline()
我还能做些什么让这个程序重新发挥作用吗?
这是节目。这似乎很简单,把词汇分解成字符,并给他们一个基于汉字的值,其中的指数得分最高。:
#!/usr/bin/perl -w
# $ kanji-sort --kanji kanjiorder.txt --sentence-field 2 < mydeck-exported.txt > mydeck-toimport.txt
# $Revision: 1.5 $ $Date: 2010/01/08 08:22:33 $
# http://ichi2.net/anki/wiki/ContribFugounashi
use open qw( :std :encoding(UTF-8) );
use strict;
use Getopt::Long;
use utf8;
my $kanjifile;
my $sentence_field;
GetOptions(
'sentence-field=i'=> \$sentence_field,
'kanji=s' => \$kanjifile
);
my %kanji;
open KANJI, "<$kanjifile";
while(<KANJI>){
chomp;
$_=(split /\t/)[0];
if(exists $kanji{$_}){
print STDERR "$0: warning: ignoring duplicate kanji: $_: $kanjifile: $.\n";
}else{
$kanji{$_}=$.;
}
}
my @max;
my @lines;
while(<>){
chomp;
my $i=$. - 1;
$lines[$i]=$_;
my $sentence=(split '\t', $_)[$sentence_field];
my @chars = split //, $sentence;
$max[$i]=0;
foreach my $char (@chars){
if(($kanji{$char}) && ($kanji{$char} > $max[$i])){
$max[$i]=$kanji{$char};
}
}
}
my @index = 0 .. (@max - 1);
my @sorted = sort {$max[$a] <=> $max[$b]} @index;
my $last=0;
foreach my $i (@sorted){
my $step=$max[$i] - $last;
$last=$max[$i];
my $sentence=(split '\t', $lines[$i])[$sentence_field];
my @chars = split //, $sentence;
print "$lines[$i]\t$max[$i]\t$step\n";
}
发布于 2018-07-22 06:27:55
代码中没有语法错误。在Strawberry Perl (Windows)和Linux上签入。修复您的perl安装。
在这里,如何在不运行脚本的情况下检查语法:
perl -c test.pl
https://stackoverflow.com/questions/51461358
复制相似问题