ASAHIネット(
[URL]のjouwa/salonからホットコーナー(
[URL] )に転載したものから。
---
もう2週間近く前に出会った現象。書いておいたほうがいいと思うので、書
いておきます。
--- ここから ---
ご参考:
Windows版Rubyで出会った現象。Rubyに限らず、他の言語でも起きるはず。
昨日と今日、はまってました。
doc = nil
if input_filename != nil then
File.open(input_filename) {|f|
doc = REXML::Document.new f
}
else
doc = REXML::Document.new $stdin
end
の標準入力をパラメータに渡してXMLのDocumentを作る部分、
doc = REXML::Document.new $stdin
が動かない。
あれこれググったり、REXMLのドキュメントやらソースやら、RubyのIOパッ
ケージのドキュメントやらソースやら延々と読んでみたけど、わからず。
何度目かのググリで、それらしいのに、ヒット。
# ActiveRubyのRubyコンソールで、ruby xxx.rb param ではなく xxx.rb
param と
# .rbの拡張子の関連付けを使った起動をすると、動かない。詳しくは、
#
[URL]
# Windowsでの標準入力リダイレクト
# を参照。
# レジストリを書き換えるか、rubyコマンドを明示して指定すればよい。
要は、Windowsの仕様というかバグというか。
[URL]
STDIN/STDOUT Redirection May Not Work If Started from a File
Associationでは、最新のサービスパックでいいみたいに書いてあるけど、ぼ
くのマシンはXP SP2で最新のはず。でも、起きた。
--- ここまで ---
この件を、ruby-listに書いておいてくださった、大谷さんありがとうござ
います。また、そのアーカイブを検索可能にしてくださっている長岡技術大学
のShin-iciho Haraさん、ありがとうございます。
とにかく、助かりました。
生まれて初めてRubyで30行以上書いた。\(^O^)/
詳しくは、
[URL]
をみてほしいが、Gene Ontologyという遺伝子のオントロジーデータを処理す
るのに、Rubyで書いてみた。
普段ならJavaで書くんだけど、RubyでXML処理はどうやるんだろうと思って、
やってみた。REXMLを使ってみたが、非常に簡単。遅いけれど、今回はスピー
ドは要求されないし、ファイルサイズも100MBやGBの世界じゃなくて10MBくら
いだから、REXMLはメモリに全部もってくるのが基本だけど、サイズ的に大し
たことないので、やってみようかなと。
rdocの書き方も初めて勉強しました。\(^O^)/
まつもとさんがまだRubyの本を書いているころから、RubyはALGOLシンタッ
クスのLispだなどといって好きな言語だったんですが、体がC/C++/Java系に慣
れていて、たとえば if のブロックが { } ではなくthen endなのが、けっこ
う嫌いだった。
でも、500行くらい書くとなんかこっちに体が慣れてきて、どうでもよくな
ってくるね。^^;
逆にJavaに戻ってくると if () と () が必要なのが煩わしくなってくるし、
; も汚く思えてくる。
勝手なもんだね。\(^O^)/
セコメントをする