String =~ string

class String - RDoc Documentation says this:

“cat o’ 9 tails” =~ ‘\d’ #=> nil

I get this:

irb(main):001:0> “cat o’ 9 tails” =~ ‘\d’
TypeError: type mismatch: String given
from (irb):1:in `=~’
from (irb):1

$ ruby -v
ruby 1.8.4 (2005-12-24) [i386-mswin32]

Any clues?

Alex Y. wrote:

$ ruby -v
ruby 1.8.4 (2005-12-24) [i386-mswin32]

Any clues?

Use a regexp:

irb(main):004:0> “cat o’ 9 tails” =~ /\d/
=> 7

Timothy H. wrote:

    from (irb):1

That’s not the point. Why is what I’m seeing different to what’s in the
docs? They explicitly say I should be able to use a string there, and
I’ve just wasted half an hour tracking that bug down because of that.

On Jun 24, 2006, at 1:51 PM, Alex Y. wrote:

$ ruby -v
ruby 1.8.4 (2005-12-24) [i386-mswin32]

Any clues?


Alex

String#=~ used to automagically convert the second arg into a regexp.
It doesn’t do that anymore.

Logan C. wrote:

String#=~ used to automagically convert the second arg into a regexp. It
doesn’t do that anymore.
Ah, ok. That makes sense. Why was it changed?

I’d really like similar behavior to be added back in. For example,
converting to a Regexp, yes, but instead: ‘foo’ =~ ‘o’ would convert
‘o’ such as: Regexp.new(Regexp.escape(‘o’))