Rubyにはスクリプト言語らしい機能が色々ある。::DATAを使うと、スクリプト本体の後ろにテキストデータを貼り付けておける。 def show_data puts "DATA: #{DATA.class}" DATA.each_line do |l| puts "line: #{l}" end end show_data __END__ 1 2 3 $ ruby data.rb DATA: File line: 1 line: 2 line: 3 $DATAというのは、Fileオブジェクトで、ruby.c の load_file_internal という関数で初期化されている。 static VALUE load_file_internal(VALUE arg) { : : : : : : if (script && tree && rb_parser_end_seen_p(parser