use strict; use warnings; my %h = ( 'a' => 'aaa', 'b' => '' ); for(keys %h){ next if $h{$_} eq ''; my $evalstr = "\$$_ = '$h{$_}';"; print "eval: $evalstr\n"; eval $evalstr; die "eval $@" if $@; } print "a=$a\n";