From: Shin-ichiro HARA Date: 1997-12-04T13:35:05+09:00 Subject: [ruby-list:5527] Re: nil =~ regexp (Re: cgi-lib.rb) 原です。 From: matz@netlab.co.jp (Yukihiro Matsumoto) Subject: [ruby-list:5524] Re: nil =~ regexp (Re: cgi-lib.rb) Date: Thu, 4 Dec 97 11:00:11 +0900 > まつもと ゆきひろです > |ここはやはり =~ の左辺が String オブジェクトでなければ例外、 > |とした方があっさりしていてきれいではないかしら。 > > では,そうしましょう(安易な奴).1.1b0からね. それがいい、それがいいと思うんですが、 >> 組み込みでは、文字列のつもりだったが実際は nil となってしま >> ったりする可能性のあるのは、初期化を忘れた大域変数、インスタ >> ンス変数、マッチングの後の $&, $1,..、find の結果、、、ぐら >> いですよね。 重要なのを忘れていました。ENV[] ですね。今回の cgi-lib.rb では、 if ENV['SERVER_SOFTWARE'] =~ /^Microsoft-/ then Dir.chdir ENV['PATH_TRANSLATED'].sub(/[^\\]+$/, '') end のところを if (ENV['SERVER_SOFTWARE'] || "") =~ /^Microsoft-/ then Dir.chdir ENV['PATH_TRANSLATED'].sub(/[^\\]+$/, '') end みたいに書かないといけなくなって面倒なんですよね。本来は if ENV['SERVER_SOFTWARE'] && (ENV['SERVER_SOFTWARE'] =~ /^Microsoft-/) then あるいは if (tmp = ENV['SERVER_SOFTWARE']) && tmp =~ /^Microsoft-/) then ですが。 それは、そういうものだとしかいいようがないですね。