use threads;; use Thread::Queue;; ## define a sub that prints out the thread and package it is running under sub test{ print threads->self->tid, __PACKAGE__ . "::test" for 1 .. 5; };; ## test it test();; 0 main::test 0 main::test 0 main::test 0 main::test 0 main::test ## A queue for communication $Q = new Threads::Queue;; ## A thread that pulls the code ref of the queue and invokes it sub thread{ my $Q = shift; my $code = $Q->dequeue; &{ $code }->() };; ## create the thread $t = threads->create( \&thread, $Q );; ## And post the name of the code to be invoked $Q->enqueue( 'test' );; 1 main::test 1 main::test 1 main::test 1 main::test 1 main::test