在Ruby中使用STDIN的最佳实践?[闭门]

关闭。这个问题是基于意见的。它目前不接受答案。

<hr class=“my12大纲无baw0 bb bc-POWER-400”/

想改进这个问题吗?编辑这篇文章,更新这个问题,以便用事实和引文来回答。

去年关闭了

改进这个问题

我想用Ruby处理命令行输入:

&gt;cat input.txt | myprog.rb
&gt;myprog.rb&lt;input.txt
&gt;myprog.rb arg1 arg2 arg3。。。

最好的方法是什么?特别是我想处理blank STDIN,我希望有一个优雅的解决方案

#!/usr/bin/env ruby
STDIN.read.split(“\n”)。每个都有一个|
提出
终止
ARGV.每个do | b|
放b
终止

以下是我在自己收藏的晦涩的Ruby中发现的一些东西

因此,在Ruby中,Unix命令cat的一个简单的无铃实现是:

#!/usr/bin/env ruby
读取ARGF

ARGF在输入方面是您的朋友;它是一个虚拟文件,从命名文件或STDIN获取所有输入

ARGF.each_with_index do|line,idx|
打印ARGF.filename,idx,第行
终止
#打印通过包含登录名的命令行传递的每个文件中的所有行
ARGF.每个do |行|
如果line=~/login,则放置第行/
终止

谢天谢地,我们没有得到Ruby中的菱形操作符,但是我们确实得到了 ARGF 作为替换。虽然晦涩难懂,但它实际上是有用的。考虑这个程序,它在命令行中提到的每个文件中都准备好了版权标题(感谢另一个Primm, -I/COD>):

#!/usr/bin/env ruby-i
Header=DATA.read
ARGF.每条线都有|
如果ARGF.pos-e.length==0,则放入标题
放e
终止
__结束__
#--
#版权所有(C)2007 Fancypants公司。
#++

归功于:

  • https://web.archive.org/web/20080725055721/http://www.oreillynet.com/ruby/blog/2007/04/trivial_scripting_with_ruby.html#comment-565558
  • http://blog.nicksieger.com/articles/2007/10/06/obscure-and-ugly-perlisms-in-ruby

发表评论