有没有一种简单的方法来模拟 perl
脚本中 -l
命令行开关的效果? (当然,我总是可以chomp
每一行,然后在我打印的每一行附加“\n”,但重点是避免这样做。)
最佳答案
没有。使用$\
可以自动追加"\n"
,但必须自己添加chomp。
-l
的工作原理如下。
$ perl -MO=Deparse -ne 'print $_'
LINE: while (defined($_ = <ARGV>)) {
print $_;
}
$ perl -MO=Deparse -lne 'print $_'
BEGIN { $/ = "\n"; $\ = "\n"; } # -l added this line
LINE: while (defined($_ = <ARGV>)) {
chomp $_; # -l added this line
print $_;
}
(评论是我的。)请注意,-l
在 -n
生成的循环的开头添加了文字 chomp $_
>(只有当你使用 -n
或 -p
时才会这样做)。您无法设置任何变量来模仿这种行为。
-l
、-n
和 -p
通过将样板文本包裹在您提供的代码周围来工作,这是一个鲜为人知的事实在编译之前。
关于perl - 如何在脚本中模仿 -l,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16070374/