#! /usr/bin/perl use strict; use warnings; use Data::Dumper; # Data Structure my %h = ( 'a' => 'z', 'b' => 'y', 'c' => 'x', 'd' => 'w', ); my @to_keep = qw{ a c }; my %keepers = map { $_ => 1 } @to_keep; foreach ( keys %h ) { if ( !exists $keepers{$_} ) { delete $h{$_}; } } $Data::Dumper::Varname = 'h'; print Dumper( \%h ); $h1 = { 'c' => 'x', 'a' => 'z' };