Is /#$/ a Ruby bug?


#1

p /#$/.match("#")[0] # syntax error: unterminated string meets eof

The interpreter seems to interpret the first # as a comment but not the
second.

p /#$/.match("#")[0] # this works

This seems even odder:

p /[#$]/.match("#")[0] # syntax error: compile error

p /[#$]/.match("#")[0] # we can escape the $ rather than the #

Shouldn’t the interpreter ignore # within a Regexp /…/ unless there’s
an x flag, a #{…} substitution, or a (?#…) comment? Bug or feature?


#2

On Tue, Jan 03, 2006 at 11:42:57AM +0900, Dan K. wrote:

p /[#$]/.match("#")[0] # we can escape the $ rather than the #

Shouldn’t the interpreter ignore # within a Regexp /…/ unless there’s
an x flag, a #{…} substitution, or a (?#…) comment? Bug or feature?

String interpolation with #{} need not use the enclosing curly brackets
when
interpolating instance variables or global variables:

$global = ‘hello’
=> “hello”

“the var value is #$global”
=> “the var value is hello”

$/ = ‘oops, gotcha’
=> “oops, gotcha”

“the var value is #$/”
=> “the var value is oops, gotcha”

marcel