use threads; use threads::shared; my $sem :shared; sub tprint { my $tid = threads->tid; lock $sem; print "$tid: ",@_, "\n"; } sub twarn { my $tid = threads->tid; lock $sem; warn "$tid: ", @_; }