我正在尝试在脚本中复制经典的一线:
perl -i -p -e 's/search_string/replace_string/g' /path/to/file/foo
它将所有出现的“ search_string”替换foo
为“ replace_string”。
我尝试了:
@ARGV=("/path/to/file/foo");
$^I = ".bak";
while (<>) {
s/search_string/replace_string/g;
print;
}
这行得通,但是,如果我需要再次访问命令行参数,则会丢失@ARGV
值。因此,我需要备份它们:
my @temp=@ARGV;
@ARGV=("/path/to/file/foo");
$^I = ".bak";
while (<>) {
s/search_string/replace_string/g;
print;
}
@ARGV=@temp;
这也是可行的,但是,由于我对Perl刚起步,我发现它太复杂了,有点反对使“容易的事情变得容易而困难的事情”。
你能建议一个更好的方法吗?
要临时备份软件包变量,请使用local
。
{
local @ARGV = ( "/path/to/file/foo" );
local $^I = ".bak";
while (<>) {
...
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句