A slice -- even a hash slice -- is not a hash. It's a list (that includes only the values components, not the keys). That's why the sigil is @ and not %. You cannot hash-dereference a list. As dragonchild astutely suggested, you can use map to get the effect you want.
map @{$_}{@keys}, @hoh{@keys};

Caution: Contents may have been coded under pressure.

In reply to Re: Slicing multilevel hashes by Roy Johnson
in thread Slicing multilevel hashes by bobf

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":