Ниже приведены некоторые вещи, которые я нашел в своей коллекции малоизвестного Ruby.
Итак, в Ruby простая реализация команды Unix без звонков cat
будет выглядеть так:
#!/usr/bin/env ruby
puts ARGF.read
ARGF
Ваш друг, когда дело доходит до ввода; это виртуальный файл, который получает все входные данные из именованных файлов или все из STDIN.
ARGF.each_with_index do |line, idx|
print ARGF.filename, ":", idx, ";", line
end
# print all the lines in every file passed via command line that contains login
ARGF.each do |line|
puts line if line =~ /login/
end
Слава Богу, мы не получили алмазного оператора в Ruby, но мы получили ARGF
в качестве замены. Хотя неясно, на самом деле это оказывается полезным. Рассмотрим эту программу, которая добавляет заголовки авторских прав на место (благодаря другому Perlism -i
) к каждому файлу, указанному в командной строке:
#!/usr/bin/env ruby -i
Header = DATA.read
ARGF.each_line do |e|
puts Header if ARGF.pos - e.length == 0
puts e
end
__END__
#--
# Copyright (C) 2007 Fancypants, Inc.
#++
Кредит для:
myprog.rb
:input.txt
файл прикреплен к stdin ; оболочка управляет этим для вас.