use strict; use threads; use lib ('./'); use TEST::TEST; TEST::TEST::createsock(1); my $t1 = threads->create(\&TEST::TEST::mysub1, 1, "test 1"); select(undef, undef, undef, .25); print "above mysub2\n"; my $t2 = threads->create(\&TEST::TEST::mysub2, 2, "test 2"); print "below mysub2\n"; $t2->join(); #### package TEST::TEST; use strict; use threads; use IO::Socket::Multicast; our $sock = undef; sub createsock { my $create = shift @_; if ($create) { $sock = IO::Socket::Multicast->new(Proto=>'udp',LocalPort=>2200); $sock->mcast_add('226.1.1.2') || die "Couldn't set group: $!\n"; } } sub mysub1 { my ($sub, $msg) = shift @_; print "start sub $sub\n"; #my $key = getc(STDIN); my $data; if ($sock == undef) { $sock = IO::Socket::Multicast->new(Proto=>'udp',LocalPort=>2200); $sock->mcast_add('226.1.1.2') || die "Couldn't set group: $!\n"; } $sock->recv($data,1024); print "end sub $sub\n"; } sub mysub2 { my ($sub, $msg) = shift @_; print "start sub $sub\n"; print "msg from sub $sub: $msg\n"; print "end sub $sub\n"; } 1;