Regexp.escape(str) returns the argument string (i.e. same object_id) when no change occurs. So x="123" Regexp.escape(x) << "456" puts x #=> 123456 Should that be considered a problem? And more generally, does it present a problem if foo(str) sometimes return the str object itself and sometimes a modified copy? -- Daniel