httpd-test-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stas Bekman <s...@stason.org>
Subject Re: in-place edit in TestRun.pm
Date Thu, 11 Mar 2004 05:39:53 GMT
Randy Kobes wrote:
> Hi,
>    A recent change in Apache-Test/lib/Apache/TestRun.pm
> involves an in-place edit, at around line 765:
>     local @ARGV = $config_file;
>     while( <> ) {
>         s/old/new/;
>         print;
>     }
> Unfortunately, Win32 can't do such in-place edits:
> for example,
>    perl -spi -e 's#old#new#' file.txt
> won't work, but
>    perl -spi.bak -e 's#old#new#' file.txt
> will. 

sigh :( shouldn't the perlrun and perlvar manpages state that bug?

> Would something like
>    my $orig = $config_file . '.orig';
>    rename $config_file, $orig or die "...";
>    open(my $rfh, $orig) or die "...";
>    open(my $wfh, '>', $file) or die "...";
>    while(<$rfh>) {
>        s{old}{new}g;
>        print $wfh $_;
>    }
>    close $rfh;
>    close $wfh;
>    unlink $orig;
> be OK?

Sure, will you do it?

But you can't use 'open my $fh', must use Symbol::gensym to support perl < 
5.6. Also please drop () for consistency. Thanks.

But if you say that this works:

   perl -spi.bak

why not doing:

    local $^I = ".bak"; # windows can't do inplace edit
    local @ARGV = $config_file;
     while( <> ) {
         s/old/new/;
         print;
     }
     unlink "$config_file.bak";

much simpler.
__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

Mime
View raw message