$ perl -Mthreads -e'my $t = async { die "Foo" }; $t->join; say "done"' Thread 1 terminated abnormally: Foo at -e line 1. done #### $ perl -Mthreads -E'my $t = async { "code" }; $t->join; say "done"' done #### $ perl -Mthreads -E'sub t { "code" } my $t = async { t(); warn("returned"); }; $t->join; say "done"' returned at -e line 1. done #### $ perl -Mthreads -E'sub t { "code" } my $t = async { threads->exit(); }; $t->join; say "done"' done #### $ perl -Mthreads -E'my $o = \&threads::exit; *threads::exit = sub { warn "exit"; $o->(@_) }; my $t = async { threads->exit(); }; $t->join; say "done"' exit at -e line 1. done