#!/usr/bin/perl use threads; use Thread::Semaphore; sub bad { sub mysub { print "my sub : $1 $2\n"; } $a = "Hi there and hi there.\n"; $a =~ s/(\w+ \w+)(?{mysub();})//gi ; } sub mythread { print "begin\n"; print "end\n"; } my $thr = threads->new(\&bad); @r=$thr ->join(); my $thr = threads->new(\&mythread); @r=$thr ->join(); __END__ #### #!/usr/bin/perl use threads; use Thread::Semaphore; sub mythread { print "begin\n"; print "end\n"; } sub mysub { print "my sub : $1 $2\n"; ''; } $a = "Hi there and hi there.\n"; $a =~ s/(\w+ \w+)/&mysub()/ge; my $thr = threads->new(\&mythread); @r=$thr ->join(); __END__