Marcus, you are incorrect when you summarize the documentation as noting that modifying a reference taken to a substring is forbidden. That's wrong. You can do that to a reference once, but not two or more times.
$_ = 'aaaaaaaaaa';
$_ = \ $_;
$$_ =~ s/ ... / ... /; # This is ok.
$$_ =~ s/ ... / ... /; # This is not.
Modifying substring lvalues is typically safer if you don't do something to persist the lvalue beyond the length of a statement - you're less likely to find yourself accidentally modifying it more than once. The following expression is a highly useful form of lvalue substrings and one that people should be more aware of. It would not be available if lvalue substrings were not available.substr( ... ) =~ s/ ... / ... /g