Berikut adalah beberapa hal yang saya temukan dalam koleksi Ruby yang tidak jelas.
Jadi, di Ruby, implementasi no-bells sederhana dari perintah Unix catadalah:
#!/usr/bin/env ruby
puts ARGF.read
ARGFadalah teman Anda dalam hal input; itu adalah file virtual yang mendapatkan semua input dari file bernama atau semua dari 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
Syukurlah kami tidak mendapatkan operator berlian di Ruby, tetapi kami memang mendapatkan ARGFsebagai penggantinya. Meski tidak jelas, ternyata itu bermanfaat. Pertimbangkan program ini, yang menambahkan header hak cipta di tempat (berkat Perlism lain, -i) ke setiap file yang disebutkan pada baris perintah:
#!/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.
#++
Kredit untuk:
myprog.rb:input.txtfile dilampirkan ke stdin ; shell mengelola ini untuk Anda.