in reply to How do I check if a scalar in @_ is writable?

You don't need to check (you could use Scalar::Util if you did, or eval)
$_[0] ||= "anonymous"; # <<<<<<<<<<<<<<<<<<< wrong wrong wrong
The intent of your function is to modify $body (the 3rd argument), so restrict yourself to modifying only $body. It is (imho) a better idea to do it like
sub roy { my( $f, $b, $modifythisREF ) = @_; $$modifythisREF =~ s/yoda/yoda/g; return; } roy( "", "", \$body ); ...

MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
** The third rule of perl club is a statement of fact: pod is sexy.