$string =~ s[this][that]g operates on a variable. It isn't the easiest thing to read, but it's been around so long that we've all gotten used to it. The syntax you're proposing has too much going on in one line. It's not even operating on the method, but on the return value of the method. And then does it call the method again to set the new value, or do some kind of implicit referencing? It's not obvious.
I didn't respond to the other benefits you listed because all of them less important than readability. The current syntax doesn't seem cumbersome to me.