use strict; use warnings;
my %h=(a=>1,b=>2,c=>3);
my @x=('a','c');
my $hr=\%h;
my %g=%$hr{@x}; # plain old %g = %h{@x} also works
my $gr = \%g;
print $gr->{a} # prints "1"
print $gr->{b} # prints "Use of uninitialized value in print"
####
my %h=(a=>1,b=>2,c=>3);
my @x=('a','c');
my $hr = \%h;
my $gr = $hr->{@x};
print $gr->{a}
##
##
my $gr = $hr{@x};
my $gr = $$hr->{@x};
my $gr = \%{$hr}{@x}