From: Dave Thomas Date: 2000-01-28T19:46:56-06:00 Subject: [ruby-talk:01195] Re: Semantics of chomp/chop matz@netlab.co.jp (Yukihiro Matsumoto) writes: > |If no change is make to $_, a new copy of it is returned. If a change > |_is_ made, then it becomes the copy, which is returned. > | > |This additional rb_str_dup looks like it's trying to avoid some kind > |of aliasing problem. Is the extra copy necessary? > > Since there's no way to detect whether rb_str_chomp_bang will success, > copying string is necessary. But there's no need to return the copy. > I'll fix it. gsub should return the original string if no change is made. I was wondering why copy it at all, as all four methods are allowed to alter $_. > This is because gsub!/sub! returns nil if no replacement happened. > I made it so to know whether change is made or not. There's no other > easy way to know this. But if this behavior is a source of big troubles, > I'd think of changing the behavior. I don't know if it's necessary, but you _could_ have [g]sub! and cho[m]p! always return the string, and set $& to whatever was changed. If $& is nil, then no change was made. Regards Dave