Its not clear to me what the "avoiding dereferencing side effects" part of the documentation means exactly, however I feel pretty confident in saying that it isnt relevent here. When you do
$hash{key}.=$str;
there is no dereferencing going on. With
$hash->{key}.=$str;
there is, however it happens before the .= operator is involved, so it doesnt explain the special casing behaviour of .= and other mutator operators. It turns out that the documentation of this behaviour is not to be found in perlop, but rather in perlsyn (in the section Declarations):
Operators such as ++, --, +=, -=, and .=, that operate on undefined le +ft values such as: my $a; $a++; are also always exempt from such warnings.
Hope this clears things up for you.
In reply to Re^5: problem unless I use ".="
by demerphq
in thread problem unless I use ".="
by cgmd
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |