简而言之,我正在尝试使用一些模块,但它们不起作用,没有警告、错误、运行时错误、崩溃,什么都没有,只是没有结果。具体来说,我有
use strict;
use warnings;
use Lingua::Identify qw(:language_identification);
...
foreach my $f ( @txt ){
my $s = &fileasstring( $f );
my @l = langof( $s ); # problem's here!
&error( "!\nl=".scalar(@l)."\n" );
foreach( @l ){ &error( "!$f\t[$_]\n" ); }
&error( "\n" );
}
运行“perl langs.pl”的输出是
[da.txt] reading file
[da.txt] 8 lines read
[da.txt] done
da.txt [Artikel 26. Enhver har ret til undervisning. ... som vedkommende har skabt. ]
l=42
da.txt [da]
da.txt [0.278009331769791]
da.txt [sv]
da.txt [0.126520770367313]
da.txt [nl]
da.txt [0.0886509276813543]
...
当运行看似重叠的“langs.exe”时,我得到了
[da.txt] reading file
[da.txt] 8 lines read
[da.txt] done
da.txt [Artikel 26. Enhver har ret til undervisning. ... som vedkommende har skabt. ]
l=0
就是这样,没有来自 langof() 的返回值,只是一个空数组。
上面的调试信息显示文件被正确读取(da、de、en、es、fr 和其他几种语言各一个),所以它至少经历了动作,但显然 perlapp 发现模块足够好,不会抛出编译时或运行时出现错误或警告,但在编译时,Identify 中的例程什么也不返回。