sub sleep_lock { my $FH = *{$_[0]}; my $lock_type = $_[1]; my $time = $_[2] ||5; for ( 1..$time ) { last if flock $FH, $lock_type; unless ( $_ < $time ) { die "Can't lock file: $!" }; sleep 1; } }