>perl -wMstrict -le "my @data = ( { \"name\" => \"joe\", \"age\" => 21, \"weight\" => 150, \"height\" => \"\", \"sex\" => \"\", }, { \"name\" => \"joe\", \"age\" => \"\", \"weight\" => \"\", \"height\" => \"6'0\", \"sex\" => \"\", }, { \"name\" => \"joe\", \"age\" => \"21\", \"weight\" => \"\", \"height\" => \"\", \"sex\" => \"male\", }, ); my %hash = map { my $hr = $_; map { $_, $hr->{$_} } grep $hr->{$_} ne '', keys %$hr } @data ; use Data::Dumper; print Dumper \%hash; " $VAR1 = { 'name' => 'joe', 'weight' => 150, 'sex' => 'male', 'height' => '6\'0', 'age' => '21' };