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"); } #### Config{useithreads} : define main starting logger init logger closed logger init Thread 1 terminated abnormally: Undefined subroutine &main::1 called at ./test_threads.pl line 19. logger closed Thread 2 terminated abnormally: Undefined subroutine &main::1 called at ./test_threads.pl line 20. main done #### This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi