sub locker { $SIG{'ALRM'}=sub { warn "*** ALARM ***" }; my $start=time(); open my $h,'>>','tempfile.tmp'; say 'locker: flock LOCK_EX'; flock($h,LOCK_EX); say 'locker: locked'; say 'locker: sleep 10 using select'; select(undef,undef,undef,10); say 'locker: flock LOCK_UN'; flock($h,LOCK_UN); say 'locker: unlocked'; close $h; my $stop=time(); say 'locker ran for ',$stop-$start,' seconds'; }