use strict; use File::Copy; use Fcntl ':flock'; # import LOCK_* constants my $status_file = "/tmp/flocktest"; open(STATUS, "+<$status_file") || die "Can't open file"; print "getting lock...\n"; flock(STATUS,LOCK_EX) || die "Can't lock file"; print "waiting...\n"; sleep 10; print "copying file...\n"; # copy(\*STATUS,"/tmp/foo"); copy("$status_file","/tmp/foo"); print "finished copy, waiting....\n"; sleep 10;