in reply to Help with hash/array data structure

You've muddled your thinking about references and dereferencing.
my %packet_fields = ( $Idents{ Format_7 } => qw( ident flags
Here, you're trying to use an array (qw(...)) where you can only put a scalar. What you want is an array reference:[qw(...)]

I'm not entirely clear on what you're hoping for here: $%packet_fields{ $ident} , but you can bet that $% is not going to be a useful combination of sigils. It's probably parsed as a special variable followed by a bareword and panic.

When in doubt, use the general form of dereferencing, which is the sigil you would use if you had an ordinary variable, then a curly-wrapped expression returning a rereference, and then any indexing you would use on an ordinary variable of the referenced type. You can nest these as deeply as you need to.

Check out perldoc perlreftut again.