The problem in this case is not really about whether the program is re-runnable, but about the fact that it corrupts your data.
Neither of which is what the original recommendation is about. That recommendation, as it appears in "Perl Best Practices" is:
In-situ Arguments
Allow the same filename to be specified for both input and output.
And that most definitely
is a best practice.
The issue raised here is that one of the two solutions suggested in the book is apparently more limited in applicability than I indicate in the text (a deficiency I have already mentioned that I'll be remedying as soon as I can).
Now it may well be that "Perl Best Practices" would benefit from the addition of an extra guideline; one that suggests using a transactional approach to avoid corrupting data. But that's only peripherally related to this guideline. It should definitely be a separate suggestion, since the problem of data corruption is not unique to opening the same file twice.