2

以下のPerlコードスニペットからわかるように、$document文字列(テキストドキュメントのテキストを含む)を@document配列に入れています。$document次に、それをステミングする前に印刷します。次に、配列をステミングし、ステミングされた結果が文字列@documentに入れられますが、次のようになります。これはメモリアドレスのようなものです。$stemmed_words_anon_arrayARRAY(0xc99b3c)

私は何が間違っているのですか?私results_stemmed.txtもそのARRAY(0xc99b3c)中に含まれています。

# Put string of main document into an array
my @document = split(' ', $document);

# Print the $document string to check it before stemming it
print $document;

open (FILE_STEM, '>results_stemmed.txt');
use Lingua::Stem qw(stem);
my $stemmed_words_anon_array = stem(@document);
# $stemmed_words_anon_array is just receiving: ARRAY(0xcbacb) here
print FILE_STEM $stemmed_words_anon_array;
close(FILE_STEM);
print $stemmed_words_anon_array;
4

3 に答える 3

5

参考です。 @$stemmed_words_anon_array配列自体を取得します。Perlで参照を処理する方法の詳細については、を参照してくださいperldoc perlref

于 2012-07-19T15:20:54.193 に答える
1

File :: Slurp :: write_fileを使用して、 @$stemmed_words_anon_array:の内容全体をすばやく書き込むことができます。

use File::Slurp qw( write_file );
use Lingua::Stem qw( stem );

my $stemmed_words = stem(split ' ', $document);
write_file 'results_stemmed.txt', $stemmed_words;
print "@$stemmed_words\n";
于 2012-07-19T18:05:02.727 に答える
1

Lingua::Stemモジュールのドキュメントは少し不明確です。ユーザーとして、それが匿名配列であることを気にする必要はありません。匿名配列への参照であることに注意してください。

もちろん、参照を介してのみ匿名配列にアクセスできますが、気付かない場合もあります。

トレーニングコースで参考資料を紹介するときは、常にどのように見えるかを人々に示します。そして、それを知る必要はないことを彼らに伝えますが、ある時点で、参照された変数を出力しようとしたときに誤って参照を出力するので、それを認識できると便利です。

于 2012-07-20T10:12:50.937 に答える