#!/usr/bin/perl use strict; use threads; use threads::shared; use tmp; my $rf = tmp->new(); share(my @data); my @threads; for ( my $count = 1; $count <= 10; $count++) { my $t = threads->new(\&sub1, $count); push(@threads,$t); } foreach (@threads) { my $num = $_->join; print "done with $num -- @data\n"; } print "End of main program @data\n"; sub sub1 { my $num = shift; print "started thread $num\n"; print "done with thread $num\n"; push (@data,$rf); return $num; } -------------- module tmp.pm package tmp; sub new { my ($class)=@_; my $hash = {}; bless ($hash,$class); } sub _test { my ($self,$arg) = @_; print "testic $arg\n"; } 1; #### thread failed to start: Invalid value for shared scalar at ./test.pl