Berikut adalah beberapa hal yang saya temukan dalam koleksi Ruby yang tidak jelas.
Jadi, di Ruby, implementasi no-bells sederhana dari perintah Unix cat
adalah:
#!/usr/bin/env ruby
puts ARGF.read
ARGF
adalah 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 ARGF
sebagai 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.txt
file dilampirkan ke stdin ; shell mengelola ini untuk Anda.