[#1026] Is this a bug? — Dave Thomas <Dave@...>

18 messages 2000/01/03

[#1084] Infinite loop — Dave Thomas <Dave@...>

17 messages 2000/01/11

[#1104] The value of while... — Dave Thomas <Dave@...>

24 messages 2000/01/11

[ruby-talk:01195] Re: Semantics of chomp/chop

From: Dave Thomas <Dave@...>
Date: 2000-01-29 01:46:56 UTC
List: ruby-talk #1195
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

In This Thread