From: David Alan Black Date: 2000-11-14T19:16:28+09:00 Subject: [ruby-talk:6354] rescue clause affecting IO loop behavior Hello - My goal here is to implement and use the method String#is_end? to test for a match on the pattern /END/. It works fine, until I add a rescue clause to the block that's reading from the file. Specifically, given this: class String def is_end? /END/.match self end end I find that this works as expected: def one fh = File.open("roster") begin line = fh.readline end until line.is_end? fh.close puts "one: reached END" end but this does not: def two fh = File.open("roster") begin line = fh.readline rescue puts $! + " while looking for END" exit end until line.is_end? fh.close puts "two: reached END" end Output of running one and two: one: reached END end.rb:25:in `two': undefined method `is_end?' for nil (NameError) from end.rb:31 I can't work out why adding a rescue clause would result in this change. And it does seem to involve String#is_end? -- if I use line =~ /END/ instead, both methods work. Thanks for any help -- David -- David Alan Black home: dblack@candle.superlink.net work: blackdav@shu.edu Web: http://pirate.shu.edu/~blackdav