sub fileopen { my($filename) = @_; local *MW; my($openokay) = open(MW,"+<$filename"); if (!$openokay) { return 0; } lock(*MW); seek(MW,0,0); return *MW; } sub lock { my($nick) = @_; flock({$nick},LOCK_EX); # and, in case someone appended # while we were waiting... seek({$nick}, 0, 2); } sub unlock { my($nick) = @_; flock({$nick},LOCK_UN); }