in reply to exists (EXPR), autovivified and conditionals

Well, if you keep R-ing TFM, it explains what auto-vivify means, basically it means to spring a new hash/array into existence. Example
$a = {}; warn "exists " if exists $a->{a}{b}{c}{d}; use Data::Dumper; die Dumper($a); __END__ $VAR1 = { 'a' => { 'b' => { 'c' => {} } } };
The key d in $a->{a}{b}{c}{d} doesn't exist, but look at the magic birth of those hashes ;)

As for Q2, your diagnosis is faulty (whatever the problem is, it's not directly in the snippet you presented). BTW, I find $hash{$key}->() more syntactically appealing ;)

MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
** The third rule of perl club is a statement of fact: pod is sexy.