我正在创建一个Thread :: Queue元素数组。 我这样做是这样的:
for (my $i=0; $i < $queues_amount; $i++){
$queues[i]=Thread::Queue->new;
}
然而,当我用每个像
这样的元素填充每个队列时$queues[$index]->enqueue($element);
我收到以下错误:
无法在未定义的值上调用方法“enqueue”...
你能帮我找出问题所在吗?
我的perl版本是5.12.2。
答案 0 :(得分:8)
您没有在循环中$
变量上使用$i
sigil:
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;