1

一言で言えば、私はいくつかのモジュールを使用しようとしていますが、それらは機能せず、警告、エラー、実行時エラー、クラッシュ、何も、結果がありません。具体的には、私は

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、およびその他のいくつかの言語ごとに 1 つずつ)。したがって、少なくともモーションは通過しますが、明らかに perlapp はスローしないモジュールを十分に検出します。コンパイル時または実行時にエラーまたは警告が表示されますが、コンパイルすると、Identify 内のそのルーチンは何も返しません。

4

1 に答える 1

0

ここで何が間違っているのか 100% 確信しているわけではありませんが、次のことを確認します。

  • $s に実際にテキストが含まれていることを確認します (print ステートメントを追加するだけです)。
  • PerlApp による utf-8 の処理とモジュールの読み込み、perl パッカーは通常、許可されているよりもはるかに詳細なドキュメントを読む必要があります。
  • 識別ループを実行する前に、Lingua::Identify が実際にロードした言語を確認してください。

最後の手段として、PAR::Packer を使用してプログラムを「コンパイル」してみてください。

また、 & 規則で fileasstring() を呼び出すのはなぜですか?

于 2016-01-07T02:24:39.833 に答える