http://www.perlmonks.org?node_id=11105972


in reply to Fetch array of values from hashref

AnomalousMonk showed you the all-weather syntax. But in later version of perls you can also use Postfix Dereference Syntax:

perl -E "$h = {a=>1, b=>2, c=>3, d=>4}; @k = qw(b d); say for $h->@{@k +};" 2 4
You can see ->@{ } as a "Slice on a ref" operator. I like the fact that it prevents having nested parts both on the accessed variable and the accessors itself (or said another way, you only need one set of {}). But this syntax is less well known and understood (and not always consistent with the rest of the perl syntax).

If the hash is not too big though, copying the content of %$h into %temp and then using the @temp{@keys} format is maybe the less confusing option though.