Perl Threads :: Очередь - PullRequest
       0

Perl Threads :: Очередь

1 голос
/ 10 февраля 2012

Я создаю массив элементов Thread :: Queue. Я делаю это так:

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

Однако, пока я заполняю каждую очередь такими элементами, как этот

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

Я получаю следующую ошибку:

Невозможно вызвать метод "enqueue" для неопределенного значения ...

Не могли бы вы помочь мне выяснить, в чем проблема?

Моя версия на Perl 5.12.2.

1 Ответ

8 голосов
/ 10 февраля 2012

Вы не используете символ $ для переменной $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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...