#!/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; } }