我的设置:perl 5.20.2
正如预期的那样,使用以下代码就地更改文件:
echo abc > test.txt
perl -i -ne 's/b/x/;print' test.txt
Run Code Online (Sandbox Code Playgroud)
但是在这里,打印输出stdout并清空文件.为什么?
echo abc > test.txt
perl -i -ne 's/b/x/;push@a,$_;END{print for @a}' test.txt
Run Code Online (Sandbox Code Playgroud)
END块不是-i -n魔法的一部分.
-n包含一个隐含的while (<>)(大部分)代码,并-i导致处理的文件<>被覆盖.
但是,如文档中所述,块BEGIN和END活在隐式循环之外,并且不受影响-i.什么都没有导致你print去任何地方stdout.
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |