#!/opt/perl-5.8.2/bin/perl -w use strict; use Thread::Queue::Any; my $value = 1234; my $queue = Thread::Queue::Any->new; $queue->enqueue( $value ); my ($returned_value) = $queue->dequeue; printf "We have returned %i\n", $returned_value; #### #!/opt/perl-5.8.2/bin/perl -w use strict; use threads; use Thread::Queue::Any; my $queue = Thread::Queue::Any->new; my $prod_thread = new threads(\&producer); my $cons_thread = new threads(\&consumer); $prod_thread->join; $cons_thread->join; sub producer { my $value = 1234; $queue->enqueue( $value ); $queue->enqueue( undef ); } sub consumer { while( my($returned_value) = $queue->dequeue ) { printf "I have been returned: %i\n", $returned_value; } } #### I have been returned: 1234 Use of uninitialized value in printf at ./2.pl line 23. I have been returned: 0 #### #!/opt/perl-5.8.2/bin/perl -w use strict; use threads; use Thread::Queue::Any; my $queue = Thread::Queue::Any->new; my $prod_thread = new threads(\&producer, $queue); my $cons_thread = new threads(\&consumer, $queue); $prod_thread->join; $cons_thread->join; sub producer { my $queue = $_[0]; my $value = 1234; $queue->enqueue( $value ); $queue->enqueue( undef ); } sub consumer { my $queue = $_[0]; while( my($returned_value) = $queue->dequeue ) { printf "I have been returned: %i\n", $returned_value; } } #### I have been returned: 1234 Use of uninitialized value in printf at ./3.pl line 25. I have been returned: 0