有没有一种简单的方法来模拟脚本中-l
命令行开关的效果?perl
(当然,我总是可以在chomp
每一行都添加“\n”到我打印的每一行,但关键是要避免这样做。)
问问题
75 次
3 回答
5
"\n"
不,您可以通过 using获得自动附加$\
,但您必须自己添加 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
添加了一个文字(并且只有在使用or时才会这样做)。您无法设置任何变量来模仿该行为。chomp $_
-n
-n
-p
一个鲜为人知的事实是-l
,-n
和-p
在编译之前将样板文本包裹在您提供的代码周围。
于 2013-04-17T22:18:25.197 回答
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
为了更好的清晰度=)
于 2013-04-17T21:16:24.043 回答
1
您可以将其添加到您的 shebang 行:
#!/usr/bin/perl -l
于 2013-04-17T21:16:09.720 回答