如何模仿-l内部脚本

kjo*_*kjo 3 perl

有没有一种简单的方法来模仿脚本中-l命令行开关的效果perl?(当然,我总是可以chomp每行,然后在我打印的每一行上附加"\n",但重点是避免必须这样做.)

cjm*_*cjm 5

不可以.您可以"\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 $_;
}
Run Code Online (Sandbox Code Playgroud)

(评论是我的.)请注意,在生成的循环开始时-l添加了一个文字(并且只有在使用或时才会这样做).没有变量可以设置为模仿该行为.chomp $_-n-n-p

这是一个鲜为人知的事实是-l,-n-p通过围绕你之前提供的代码样本文本作品的汇编.