为什么要使用ruby -l(ELL)标志?

时间:2016-10-10 07:07:02

标签: ruby

来自手册页

  

(小写字母``ell''。)启用自动换行   处理,这意味着首先将$ \设置为$ /的值,然后   其次用印章剁掉每一行!

我可以构建一个开关工作的例子:

➜  ruby-ell cat app.rb
p "hello world"
p "$\: #{$\}"
p "$\: #{$/}"
➜  ruby-ell ruby app.rb
"hello world"
"$: "
"$: \n"
➜  ruby-ell ruby -l app.rb
"hello world"
"$: \n"
"$: \n"

所以我可以看到-l正在将$/加载到$\中,但为什么要这样做呢?会喜欢一些示例和/或对使用此开关实例的引用:)

1 个答案:

答案 0 :(得分:1)

对于 -n -p ,它可能最有用。它允许您编辑当前行($_)而无需关心尾随换行符。例如,要将“foo”附加到每行的末尾:

$ echo -e "1\n2\n3" | ruby -lnpe '$_ << "foo"'
1foo
2foo
3foo

如果没有 -l <​​/ strong>,它会在换行符之后附加“foo”

$ echo -e "1\n2\n3" | ruby -npe '$_ << "foo"'
1
foo2
foo3
foo

如果不设置记录分隔符,简单的chop!就会删除所有换行符:

$ echo -e "1\n2\n3" | ruby -npe '$_.chop!; $_ << "foo"'
1foo2foo3foo

请注意,您可以指定输入记录分隔符:

echo -n "1-2-3-" | ruby -l055 -npe '$_ << "foo"'
1foo
2foo
3foo

055是-的八进制值。

您还可以通过 -0

指定输出分隔符
echo -n "1-2-3-" | ruby -0056 -l055 -npe '$_ << "foo"'
1foo.2foo.3foo.

所有这些开关都来自Perl,请参阅http://perldoc.perl.org/perlrun.html#Command-Switches