use warnings; use strict; #### chomp($pid = $$); #### $LOCK_EXCLUSIVE = 2; $UNLOCK = 8; #### use Fcntl ':flock'; #### $fifo = "ENV{HOME}/a_file"; #### $fifo = "$ENV{HOME}/a_file"; #### close(FILE) || warn "update queue file exited $?\n"; #### close(LOCK) || warn "lock file exited $?\n";; $str=`cat $fifo.lock`; flock LOCK, $UNLOCK; #### system("rm $fifo.lock"); #### #!/usr/local/bin/perl use warnings; use strict; use Fcntl ':flock'; use Tie::File; my $fifo = "$ENV{HOME}/a_file"; my $lock = "$fifo.lock"; tie( my @pid, 'Tie::File', $lock )->flock( LOCK_EX ) or die "Cannot open '$lock' $!"; @pid = $$; tie( my @lines, 'Tie::File', $fifo )->flock( LOCK_EX ) or die "Cannot open '$fifo' $!"; ( my $pop, @lines ) = sort @lines; print "$hostname is poping $pop\n"; untie @lines; print "PID lock file is going to be removed\n"; untie @pid; unlink $lock or die "Cannot unlink '$lock' $!"; __END__