Even though this is a snippet, wouldn't it have been better to have used $$
(the process id) as part of the temporary filename? And/or I think there is a
module for this sort of temporary file creation?
Not needed, because you'll be the only one creating the temp file if you make
it that far. And no, there's no module at the moment that does this just like this.
Odd that you should say that, because I was thinking of making a small module to
do just that. Interface would be something like:
use File::UpdateExclusively;
{
my $handle = File::UpdateExclusively->on("/some/file/name") or die;
my @data = <$handle>;
## process @data
print $handle @data;
}
The return value would be a tied handle. Reading from the handle would
read from the beginning of the original file (now flocked). Writing to the handle
writes to the new location. Closing the handle or letting it go out of scope does
the rename shuffle.