in reply to Re^2: I've been bit in the neck by open()
in thread I've been bit in the neck by open()

What is the reasoning behind this?

Programmer convenience. Remember that Perl is there to serve the programmer - not the other way around. Anytime you have to do something for the sole reason of not triggering a warning, you've not been productive. Warnings should not get in the way - the more warnings there are that give false positives, the more likely it is warnings are ignored, or shut off completely. (As any security or ergonomics expert can tell). Wanting to do += (or .=) on undefined values is common enough to not have a warning emitted. Beside the example given, here's another:

$sum += $_ for @list;
Note that Perl is smart enough to figure out that having undefined values for *= or /= is probably a mistake, and it warns then.