2012-02-10 23 views
1

私はThread :: Queue要素の配列を作成しています。 私はこのようなことをやっている:Perl Threads :: Queue

for (my $i=0; $i < $queues_amount; $i++){ 
    $queues[i]=Thread::Queue->new; 
} 

私はこの

$queues[$index]->enqueue($element); 

のような要素とそれを各キューを満たしていながら、しかし、私は次のエラーを取得する:

は缶」定義されていない値の呼び出しメソッド "enqueue" ...

問題の原因を特定するのに手伝ってください?

私のperlのバージョンは5.12.2です。あなたのループ内で$i変数に$印章を使用していない

答えて

8

:あなたは上use strictを持っていた場合

for (my $i=0; $i < $queues_amount; $i++){ 
    $queues[i]=Thread::Queue->new; # should be $i 
} 

は、subs部分は、裸の単語iに関するエラーを投げているだろう。多くのエラーを検出するには、すべてのプログラムの先頭にuse warnings; use strict;を置きます。

としてそれを書くためにも、もう少し慣用である:

my @queues = map {Thread::Queue->new} 0 .. $queues_amount - 1;