Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re: Not able Create Backup file when using INPLACE_EDIT ( $^I )

by davido (Cardinal)
on May 02, 2006 at 04:25 UTC ( #546814=note: print w/replies, xml ) Need Help??

in reply to Not able Create Backup file when using INPLACE_EDIT ( $^I )

The problem is that you're trying to create a backup file named ".bak" in a nonexistant directory named "l.plsub".

$^I doesn't really give you a lot of control over the path into which the temp file is going. Do you see what the error message says? It's not encrypted. The backup file is being named "l.plsub/.bak". That means that the $^I flag is just appending its contents to the current <> filename/path. Probably the easiest solution within your existing framework is to simply use $^I as it's intended to be used, like this:

local $^I = ".bak"; local @ARGV = ( '/home/antony/perl/' ); while( <> ) {.....

That will cause a backup file named "" to be created, which is, at least, a valid filename under many OS's, and in an existant directory.

If you want finer control over your tempfiles, you might want to use File::Temp.


Replies are listed 'Best First'.
Re^2: Not able Create Backup file when using INPLACE_EDIT ( $^I )
by merlyn (Sage) on May 02, 2006 at 05:07 UTC
    Keep in mind that modern versions of Perl added some extra goodies to the -i value (from perlrun):
    If the extension doesn't contain a "*", then it is appende +d to the end of the current filename as a suffix. If the extension + does contain one or more "*" characters, then each "*" is repla +ced with the current filename. In Perl terms, you could think of t +his as: ($backup = $extension) =~ s/\*/$file_name/g; This allows you to add a prefix to the backup file, instea +d of (or in addition to) a suffix: $ perl -pi'orig_*' -e 's/bar/baz/' fileA # backup t +o 'orig_fileA' Or even to place backup copies of the original files into +another directory (provided the directory already exists): $ perl -pi'old/*.orig' -e 's/bar/baz/' fileA # backup +to 'old/fileA.orig'

    -- Randal L. Schwartz, Perl hacker
    Be sure to read my standard disclaimer if this is a reply.

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://546814]
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (4)
As of 2023-12-08 20:21 GMT
Find Nodes?
    Voting Booth?
    What's your preferred 'use VERSION' for new CPAN modules in 2023?

    Results (37 votes). Check out past polls.