2012-02-10 146 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;