... can I do in-place file substitution from inside a script
If using the feature behind the -i option from within a script is what you mean... yes, you can. You can either put the -i.bak on the shebang line, or set the corresponding $^I special variable (as olus already mentioned). The latter allows a little more flexibility, e.g. you could localise the effects
#!/usr/bin/perl use strict; use warnings; sub edit_inplace { local @ARGV = @_; local $^I = ".bak"; # local $^I = ""; # no backup file while (<>) { s/(.*)/$1\n****************/; print $_; } } edit_inplace("test.txt");
BTW, even Perl doesn't do a real in-place edit (i.e. modify the physically-same file). Rather, it opens, then renames (or unlinks, when no backup extension is specified) the original file, then opens a new file with the same name — at least on Unix, where opened files continue to be accessible, even when they're no longer associated with a directory entry (look at the inode numbers before and after to verify, e.g. with "ls -li").
In reply to Re^2: read from a file and write into the same file
by almut
in thread read from a file and write into the same file
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |