Typical I solved inspiration struck after I hit send:
def X(text, todo, *args)
text.send(todo, *args)
end
puts X("abcdefgh", 'downcase')
puts X("abcdefgh", 'gsub', /[aeiouy]/, "_")
If only I had waited a few moments more :(
Any other ideas gratefully received.