http://www.perlmonks.org?node_id=488855


in reply to Re: Perl Best Practices book: is this one a best practice or a dodgy practice?
in thread Perl Best Practices book: is this one a best practice or a dodgy practice?

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.

  • Comment on Re^2: Perl Best Practices book: is this one a best practice or a dodgy practice?

Replies are listed 'Best First'.
Re^3: Perl Best Practices book: is this one a best practice or a dodgy practice?
by mikeraz (Friar) on Sep 09, 2005 at 14:38 UTC

    My copy is at home, as is my co-worker's copy. Hopefully I'm not saying something fundamentally stupid here.

    Perhaps the solution to this entire muddle is to have as the first line of commentary after that best practice read:
    Allowing the same name ensures your program will operate correctly when users, inevitably, do specify the same filename. Be Prepared, as the teach Boy Scouts 1.

    1 If you have trouble remembering the Scout's famous motto, seek out the Tom Lehrer recording and have that song play through your head while coding.

    Be Appropriate && Follow Your Curiosity