use vars qw($LF); sub new { my $proto = shift; my $class = ref($proto) || $proto; open(FH, ">".LOCK_FILE) or die "ERROR: cannot open lock file: ".LOCK_FILE.": $!\n"; my $this = { LF => \*FH }; bless($this, $class); return $this; } .... # # code_lock() # Lock a section of code. # sub code_lock { my $this = attr shift; my $ret = flock $LF, LOCK_EX; return scalar $ret; }