use warnings; use strict; use Data::Dumper; my %p; my %q = ( 1 => undef ); print Dumper( 'before', \%p ); my $r = grep $p{ $_ }, keys %q; print Dumper( 'after', \%p );