use strict; use warnings; use Data::Dumper; sub slice_by_ref { my $h = shift; my %subset = %$h{'foo', 'bar'}; print Data::Dumper::Dumper(\%subset); } my $h = {blonk => 2, foo => 3, squink => 5, bar => 8}; slice_by_ref($h); #### $VAR1 = { 'foo' => 3, 'bar' => 8 };