http://www.perlmonks.org?node_id=1071032

Superfox il Volpone has asked for the wisdom of the Perl Monks concerning the following question:

Hi there,

I am following the tutorial of perl threads (perlthrtut). However I am not able to run them concurrently. When I create a thread, the control jumps in the function, execute it sequentially and then it returns. For instance, this program:
use strict; use warnings; use Config; use threads; use threads::shared; print("Config{useithreads} : " . $Config{"useithreads"} . "\n"); print("main starting\n"); my $t1 = threads->create(&__logger); my $t2 = threads->create(&__logger); $t1->join(); $t2->join(); print("main done\n"); sub __logger{ #threads->detach(); # raise the error "already detached" print("logger init\n"); sleep(10); print("logger closed\n"); }
prints this code:
Config{useithreads} : define main starting logger init logger closed logger init Thread 1 terminated abnormally: Undefined subroutine &main::1 called a +t ./test_threads.pl line 19. logger closed Thread 2 terminated abnormally: Undefined subroutine &main::1 called a +t ./test_threads.pl line 20. main done
perl -v:
This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-li +nux-thread-multi
I can even replace the first function with a while(1){ }, it won`t execute anything else. What am I missing?

Thanks in advance
Kind regards,
s.fox