是否有一种简单的方法可以模仿-l
脚本中perl
命令行开关的效果? (当然,我总是可以chomp
每行,然后在我打印的每一行上附加“\ n”,但重点是避免必须这样做。)
答案 0 :(得分: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 $_;
}
(评论是我的。)请注意-l
在chomp $_
生成的循环开始时添加了文字-n
(如果您使用{{1},它只会这样做}或-n
)。没有变量可以设置为模仿该行为。
一个鲜为人知的事实是-p
,-l
和-n
通过在编译之前将代码文本包装在您提供的代码周围来工作。
答案 1 :(得分:3)
是的,请在 shebang 和 strictures 之后在脚本开头使用此功能:
$/ = $\ = "\n"; # setting the output/input record separator like OFS in awk
并在循环中使用:
chomp;
print;
或者像这样:
use strict; use warnings;
use English qw/-no_match_vars/;
$OUTPUT_RECORD_SEPARATOR = "\n";
while (<>) {
chomp;
print;
}
我不建议使用
#!/usr/bin/perl -l
为了更清晰=)
答案 2 :(得分:1)
您可以将它添加到shebang系列中:
#!/usr/bin/perl -l