use Thread::Queue; use strict; use warnings; use feature qw(say); my $width = 10; my $height = 10; my $queue = Thread::Queue->new(); for my $y ( 0 .. $width - 1 ) { my @colors; for my $x ( 0 .. $height - 1 ) { push @colors, mandelbrot(); } $queue->enqueue( [ $y, @colors ] ); } $queue->end; while ( my ( $y, @colors ) = @{ $queue->dequeue } ) { say qq($_, $y, $colors[$_])for 0 .. $#colors; } # this is still a fake! sub mandelbrot { int rand 20; } __END__ \monks>undef.pl 0, 0, 8 1, 0, 4 2, 0, 7 ... 7, 9, 10 8, 9, 3 9, 9, 0 Can't use an undefined value as an ARRAY reference at C:\Dokumente und Einstellungen\karl\Desktop\monks\undef.pl line 20. #### while ( my $item = $queue->dequeue ) { my ( $y, @colors ) = @$item; say qq($_, $y, $colors[$_]) for 0 .. $#colors; }