%h->{foo} looks immediately and obviously wrong to me. I've never seen any docoumentation or example do that. In fact, anything with a % or @ and an arrow following it looks wrong. The arrow always dereferences or calls a method on a ref, and a ref always looks like $something.
$h{foo} is not an execption to the rule. The $ refers to the scalar you want back, just as it does with an array when you say $array[0].