简而言之,我尝试使用某些模块,他们不工作,没有警告,错误,运行时错误,崩溃,什么都没有,只是没有结果。具体来说,我有
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" );
}
以及运行&per; 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中的例程只返回任何内容。
答案 0 :(得分:0)
我不是100%肯定这里有什么问题,但我会检查以下事项:
作为最后的手段,请尝试使用PAR :: Packer“编译”您的程序。
另外,为什么要用&调用fileasstring()?约定?