我有一个文件INPUT,其中包含以下内容:
123\n 456\n 789
我想像这样运行我的脚本:script.rb
myArray = STDIN.to_s myArray.split(/\n/) puts field.size
我期待这打印3,但我得到15.我真的很困惑.有什么指针吗?
你要
myArray = $stdin.readlines
这将把所有$ stdin放入一个数组中,每行输入一个数组条目.
请注意,使用大量输入文件这是非常低效(内存方面),所以你最好使用类似的东西:
$stdin.each_line do |l| ... end
代替
a = $stdin.readlines a.each do |l| ... end
因为前者不为前期的所有事物分配内存.尝试以第二种方式处理数GB的日志文件,以了解系统的交换性能有多好......