# write $source to $file with file-locking sub append_file_source { local($file,$source) = @_; local($e); local($LOCK_EX) = 2; local($LOCK_NB) = 4; local($LOCK_UN) = 8; open(F, ">> $file") || die "$file: $!\n"; print "Lock $file.\n" if $verbose > 1; if (!flock(F, $LOCK_EX | $LOCK_NB)) { return; } print F join("\n", $source) . "\n"; close F; flock(F, $LOCK_UN); } # write $username, $fullname, etc. to $file with file-locking sub append_file_account { local($file, $username, $fullname, $phone, $maddress, $group, $contact) = @_; local($e); local($LOCK_EX) = 2; local($LOCK_NB) = 4; local($LOCK_UN) = 8; open(F, ">> $file") || die "$file: $!\n"; print "Lock $file.\n" if $verbose > 1; if (!flock(F, $LOCK_EX | $LOCK_NB)) { return; } print F join(" - ", $username, $fullname, $phone, $maddress, $group, $contact) . "\n"; close F; flock(F, $LOCK_UN); }