2012-02-10 187 views
1

我正在創建一個Thread :: Queue元素的數組。 我做了這樣的:Perl線程::隊列

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

然而,當我像這樣

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

我收到以下錯誤元素填充它的每個隊列:

燦」 t調用方法「入隊」上一個未定義的值...

你能幫我找出問題是什麼?

我的perl版本是5.12.2。

回答

8

您沒有使用在$i變量$印記您的循環中:

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

如果您對use strict,在subs部分會拋出關於裸字i錯誤。要發現許多錯誤,請將use warnings; use strict;置於所有程序的頂部。

這也更有點習慣把它寫爲:

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