use threads; use threads::shared; my %a; my $a_ref = \%a; &resetCounters(); threads->create('add', $a_ref); threads->create('printCounters', $a_ref); #threads->create('loop', $a_ref)->join; #&printCounters(); &loop(); sub loop { while (1) { sleep 1; } } #&printCounters(); #print $a{'modified'} . "\n"; sub printCounters { my $a_ref2 = shift; print "print REF2: $a_ref2\n"; while (1) { #print "MOD: " . $a{'modified'} . "\n"; print "MOD: " . $$a_ref2{'modified'} . "\n"; sleep 1; } } sub resetCounters { $a{'added'} = 0; $a{'removed'} = 7; $a{'modified'} = 0; print $a{'modified'} . "\n"; } sub add { my $a_ref2 = shift; print "add REF2: $a_ref2\n"; while (1) { print "add\n"; $$a_ref2{'modified'}++; foreach (keys %$a_ref2) { print $_ . " " . $$a_ref2{$_} . "\n"; } sleep 5; } }