#! perl -slw use strict; use threads; my @threads = map async( sub{ my( $num, $sleep ) = @_; print "started thread $num to sleep for $sleep seconds"; sleep $sleep; print "done with thread $num"; return $num; }, $_, 2+int( rand 3 ) ), 1 .. 3; print "Done with ", $_->join for @threads; __END__ C:\test>junk52 started thread 1 to sleep for 4 seconds started thread 2 to sleep for 3 seconds started thread 3 to sleep for 2 seconds done with thread 3 done with thread 2 done with thread 1 Done with 1 Done with 2 Done with 3