#!/usr/bin/perl
use warnings;
use strict;
use threads;
use threads::shared;
my %hash :shared;
sub dumper {
my $h = shift;
my $ret = "{\n";
while (my ($k,$v) = each %$h) {
$ret.= "\t$k => $v\n";
}
$ret.= "}\n";
return $ret;
}
sub sub1 {
my $str = '[s'.threads->tid()."]\n";
$str.= dumper \%hash;
$str.= '[e'.threads->tid()."]\n";
return $str;
}
$hash{a} = 1;
my $th1 = threads->new('sub1');
$hash{b} = 2;
my $th2 = threads->new('sub1');
my $a = $th1->join();
my $b = $th2->join();
print STDERR $a;
print STDERR $b;
####
[s1]
{
a => 1
b => 2
a => 1
b => 2
}
[e1]
[s2]
{
a => 1
}
[e2]
####
[s1]
{
a => 1
b => 2
b => 2
}
[e1]
[s2]
{
a => 1
a => 1
b => 2
}
[e2]