それ Rails Ruby でもできるよ
まだ買ってない/読んでないんだけど、目的が Yahoo! Web API の解説なら CGI にする必要なくね? ウェブアプリ周りは群雄割拠だしさぁ、好きなの使わせてさぁ。
#!/usr/bin/ruby require 'open-uri' require 'rexml/document' require 'nkf' Y_URL = 'http://api.search.yahoo.co.jp/WebSearchService/V1/webSearch' Y_ID = 'YahooDemo' # use your own id if __FILE__ == $0 word = ARGV.shift max = ARGV.shift || 5 url = "#{Y_URL}?appid=#{Y_ID}&query=#{word}&results=#{max}" doc = REXML::Document.new(open(url){|u| u.read}) puts "total: " + doc.root.attributes['totalResultsAvailable'] doc.elements.each("ResultSet/Result") do |e| puts NKF.nkf("-We -m0", e.elements["Title"].text) + ": " + e.elements["Url"].text end end
URL の組み立ては URI ライブラリを使うのがフォーマルなのかな?と思ったが、余計なことに気を取られる感じがしたので止めた。
$ ./yapi.rb ruby total: 38300000 オブジェクト指向言語Ruby: http://www.ruby-lang.org/ja/ Ruby Home Page: http://www.ruby-lang.org/ Ruby Voiller TOP: http://ruby.aqa.co.jp/ Ruby Ruby Ruby: http://www-ps.kek.jp/thitoshi/ruby Ruby: http://www.goto.info.waseda.ac.jp/~fukusima/ruby/python-j.html
追記:
- あと、CGI 版は HTML エスケープしないと危ないよね。title インジェクションとか笑えるwwww。
- 変数名とか変えた。
- 404 Blog Not Found:perl - even more best practices にトラックバック撃った。
- open(url).read はいかがなものかということで open(url){|u| u.read} に修正。