perl工作,perlapped exe没有

时间:2016-01-06 20:21:18

标签: perl perlapp

简而言之,我尝试使用某些模块,他们不工作,没有警告,错误,运行时错误,崩溃,什么都没有,只是没有结果。具体来说,我有

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中的例程只返回任何内容。

1 个答案:

答案 0 :(得分:0)

我不是100%肯定这里有什么问题,但我会检查以下事项:

  • 检查$ s确实包含一些文本(只是添加一个打印语句)
  • PerlApp处理utf-8和模块加载,perl打包程序通常需要比文档更全面地阅读文档。
  • 在运行识别循环之前检查Lingua :: Identify实际加载了哪些语言,从不假设任何内容!

作为最后的手段,请尝试使用PAR :: Packer“编译”您的程序。

另外,为什么要用&调用fileasstring()?约定?