in reply to A Functional Substitute

The main (and very bold) argument for the substitution being an side-effect operator is the need to know whether it succeeded. You often need to do this:
s/^($timestamp_re)/decode($1)/e or die "Oh wait, looks like your log i +s garbled!\n";
...or this:
s/11 Aug/10 Aug/g and ++$count;
How will you know if your substitution function found anything to substitute?
--kap