perl - 如何在脚本中模仿 -l

标签 perl

有没有一种简单的方法来模拟 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/

相关文章:

perl - 安装后在@INC 中找不到 XML/Simple.pm

Perl:在引号中使用变量的语法

arrays - 从 AJAX 请求迭代 Perl 数组

带有 Catalyst 和 DBIx::Class 的 Perl - 如何在继承树中加载一组类?

regex - Notepad++正则表达式替换命名组

perl - 搜索键值对并将该值附加到 unix 中的其他键

perl - 如何在运行时将现有的Moose角色组成一个类?

regex - 一步将字符串写入变量并对其进行修改

perl - 是否可以有条件地将选项传递给perl中的方法?

linux - 安装perl时缺少libgdbm