> 
> 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

Reply via email to