Hi Gavin,

>I would trust that (\d+) will succesfully turn into an integer and forget 
>exception handling:
>
>    text.gsub!(!(/&#(\d+);/) { $1.to_i }
>
>I don't know what you could possibly have to rescue, anyway, because
>$1 will always be a string in that context, so #to_i will succeed.

What I want to rescue here is when \d > 255 then $1.to_i.chr will report 
error. I'm not just doing to_i, but to_i.chr. I fixed that according to a 
help received from this mailing list -- using unpack("U").

>
>As a matter of style, I never use do ... end on a single line.  I
>use do ... end for "procedures" (i.e. *do* something) and { ... }
>for evaluation purposes.

You are absolutely right. I tend to ALWAYS use do ... end. Partly because I 
like pascal better than C, and partly because I don't want too much aliases 
for grammar, to keep my program simple. However, yesterday I found out that:

result=text.gsub(/(regexp)/) do $1.to_i.chr end

won't work (i.e., no return value), but

result=text.gsub(/(regexp)/) { $1.to_i.chr } will...

Is ruby designed to function like that (i.e., different behavior between 
do...end and {}), or is it a little accident?

Thanks
Shannon



_________________________________________________________________
Tired of spam? Get advanced junk mail protection with MSN 8. 
http://join.msn.com/?page=features/junkmail