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 ArgumentsAnd that most definitely is a best practice.
Allow the same filename to be specified for both input and output.
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.