in reply to Re^6: Warnings not being thrown with DBI (nits)
in thread Warnings not being thrown with DBI

It isn't assigning to $href->{id}, it is assigning to a magic "alias" (at a distance) which autovivifies the key and value pair. I especially consider it autovivification because the assignment creates the key even though the key is not mentioned in the assignment code. I also consider it autovivification because it is just a special (delayed) case of the following:

To show the autovivification of a hash entry more clearly, just do \$hash{id} (using a hash entry in an lvalue 'context').

Or, to be closer to the original code, consider

for( $hash{id} ) { # ... } print keys %hash, $/;

Which hasn't (yet?) been made to delay the autovivification step like was done for function arguments.

- tye