use Thread qw(async); use Thread::Queue; my $DataQueue = new Thread::Queue; $thr = async { while ($DataElement = $DataQueue->dequeue) { print "Popped $DataElement off the queue\n"; } }; $DataQueue->enqueue(12); $DataQueue->enqueue("A", "B", "C"); $DataQueue->enqueue(\$thr); sleep 10; $DataQueue->enqueue(undef);