use strict; use warnings; use threads; sub PINGIT { print "PINGIT\n"; return 0; } sub THPING { print "THPING\n"; my @th; for (1..5) { push @th, threads->create(\&PINGIT); } $_->join for @th; return 0; } { my %opts; my @th; for (1..2) { if ($ARGV[0]) { # Doesn't generate error message push @th, threads->create(\&THPING); } else { # Generate error message push @th, threads->create(\&THPING, \%opts); } } $_->join for @th; } #### >perl 807726.pl 0 THPING THPING PINGIT PINGIT PINGIT PINGIT PINGIT Scalars leaked: 1 Scalars leaked: 1 Scalars leaked: 1 PINGIT PINGIT PINGIT Scalars leaked: 1 Scalars leaked: 1 Scalars leaked: 1 Scalars leaked: 1 PINGIT PINGIT Scalars leaked: 1 Scalars leaked: 1 Scalars leaked: 1 >perl 807726.pl 1 THPING THPING PINGIT PINGIT PINGIT PINGIT PINGIT PINGIT PINGIT PINGIT PINGIT PINGIT