Is there any reason that in-place functions like gsub! and strip! return either the modified string or nil? The nil part is problematic. A function should do no harm and leave the string as it found it if nothing is found, I think. Their non-inline versions don't return nil if nothing was found. This behaviour makes these functions untrustable for me. Has this complaint ever been voiced before?