<?xml version="1.0" encoding="windows-1252"?>
<node id="488855" title="Re^2: Perl Best Practices book: is this one a best practice or a dodgy practice?" created="2005-09-03 00:56:17" updated="2005-09-02 20:56:17">
<type id="11">
note</type>
<author id="107600">
TheDamian</author>
<data>
<field name="doctext">
&lt;blockquote&gt;&lt;i&gt;
The problem in this case is not really about whether the program is re-runnable, but about the fact that it corrupts your data.
&lt;/i&gt;&lt;/blockquote&gt;

Neither of which is what the original recommendation is about. That recommendation, as it appears in "Perl Best Practices" is:

&lt;blockquote&gt;&lt;b&gt;
&lt;font size="+1"&gt;In-situ Arguments&lt;/font&gt;
&lt;hr&gt;
&lt;p align="center"&gt;Allow the same filename to be specified for both input and output.
&lt;hr&gt;
&lt;/b&gt;&lt;/blockquote&gt;

And that most definitely &lt;em&gt;is&lt;/em&gt; a best practice. 

&lt;p&gt;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). 

&lt;p&gt;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 &lt;em&gt;separate&lt;/em&gt; suggestion, since the problem of data corruption is not unique to opening the same file twice. </field>
<field name="root_node">
488824</field>
<field name="parent_node">
488839</field>
</data>
</node>
