In the above posting, notice how the mere mention of a hash-key causes it to magically appear, with the initial value of zero, so that it can be "++" incremented to the value of one. This bit of perl-mojo is called "autovivification." Otherwise known as "do the right thing quietly and with a minimum of fuss."

No , that is not autovivification . Just like this is not autovivification

will cause perl to complain (if you have not declared (and thus created) $foo before),
while writing

$bar[396]

will cause no complaints, even if you never used this index before(or a higher one), or never told Perl how big @bar should be. You will have to declare @bar, of course. So these two examples are not comparable. And I believe the second example actually is where we see autovivication at work.

you declare $foo by saying my $foo; and then do something with it($foo++). Of course $foo++ would then not cause autovivication, because $foo already exists.

The thing with array indexes and hash keys, is that we do not have to declare them before we can use them. There is no need to say my $bar[396];, or even my $bar[396]++; before you can assign anything to it.

When putting a smiley right before a closing parenthesis, do you:

Use two parentheses: (Like this: :) )
Use one parenthesis: (Like this: :)
Reverse direction of the smiley: (Like this: (: )
Use angle/square brackets instead of parentheses
Use C-style commenting to set the smiley off from the closing parenthesis
Make the smiley a dunce: (:>
I disapprove of emoticons
Other