#!/usr/local/bin/perl use Fcntl ':flock'; $plane="plane_reserve"; $hotel="hotel_reserve"; open(PLANE,"+<$plane") || die("$$ can't open $plane\n"); open(HOTEL,"+<$hotel") || die("$$ can't open $plane\n"); flock(PLANE,LOCK_EX); sleep 1; &reserve('PLANE',$plane); close(PLANE); # and release lock flock(HOTEL,LOCK_EX); sleep 1; &reserve('HOTEL',$hotel); # flock(HOTEL,LOCK_UN); close(HOTEL); # and release lock sub reserve { my ($fh,$file)=@_; if(($value = <$fh>)>0) { seek($fh, 0, 0); print $fh $value-1,"\n"; print "$file reserved\n"; return 1; } else { die("$$ can't reserve $file\n"); } }