A seguir, algumas coisas que encontrei em minha coleção de Ruby obscuros.
Portanto, no Ruby, uma implementação simples e sem sinos do comando Unix cat
seria:
#!/usr/bin/env ruby
puts ARGF.read
ARGF
é seu amigo quando se trata de entrada; é um arquivo virtual que obtém toda a entrada de arquivos nomeados ou de 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
Graças a Deus não conseguimos o operador de diamantes em Ruby, mas conseguimos ARGF
como um substituto. Embora obscuro, ele acaba sendo útil. Considere este programa, que anexa os cabeçalhos de direitos autorais no local (graças a outro perlismo -i
) a todos os arquivos mencionados na linha de comando:
#!/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.
#++
Crédito para:
myprog.rb
: oinput.txt
arquivo é anexado ao stdin ; o shell gerencia isso para você.