> > I am running perl version 5.8.0 on a Sun Solaris 9.0 machine. > > Given the following bit of code: >
use strict; use warnings; > $SOME_FILE = $_; > chomp($SOME_FILE); > $SOME_SAFE_FILE = $SOME_FILE . "_lax"; > system ("cp '$SOME_FILE' '$SOME_SAFE_FILE'"); This is an insufficient use of 'system', you should use full paths, taint checking, check return codes, etc. I would suggest using File::Copy instead. perldoc File::Copy > open (IN_FILE, "$SOME_FILE" ); > open (TMP_OUT_FILE, ">$tmp_file" ); Right here you are opening for writing (read: clobbering, so why copy?) I am coping the original file for safe keeping in the event I screw up things. $tmp_file, so why would $SOME_SAFE_FILE have changed? That's what I want to know. > while (<IN_FILE>) { > if ( /\<\!--########/ ) { > s/(\<\!--########)(.*)/\<\!-- ######## $2/; > print TMP_OUT_FILE $_; > } > else { > print TMP_OUT_FILE $_; > } > } > > When I check the contents of $SOME_FILE, I can see that the file has been > edited correctly. However, the contents of $SOME_SAFE_FILE have been edited > also. Given this code, shouldn't $SOME_FILE be different from > $SOME_SAFE_FILE? > Are you sure $SOME_FILE has been edited, what is in $tmp_file? $tmp_file replaces $SOME_FILE Here is that bit of code: close (IN_FILE); print TMP_OUT_FILE "\n"; close (TMP_OUT_FILE); system ("mv '$tmp_file' '$SOME_FILE'"); http://danconia.org