my $t = threads->new(\&make, a => 'A', b => 'B') ; my $o = $t->join() ; show('main', $o) ; sub make { my %s : shared = @_ ; my $m : shared = bless \%s, "MADE" ; show('thread', $m) ; return $m ; } ; use Scalar::Util qw(reftype) ; sub show { my ($t, $x) = @_ ; printf "%20s: %s", $t, $x ; my $r = reftype($x) || '' ; if ($r eq 'SCALAR') { print " = ", defined($$x) ? "'$$x'" : 'undef' ; } ; if ($r eq 'ARRAY') { print " = [", join(", ", @$x), "]" ; } ; if ($r eq 'HASH') { print " = {", join(", ", map { "$_ => $$x{$_}" } sort keys %$x), "}" ; } ; print "\n" ; } ;