if { ..... } else { my %main_hash = (); $main_hash{"query"}{"constant_score"}{"filter"} = @condition_array[(int($condition)-1)]; my $json = encode_json \%main_hash; print Dumper \%main_hash; #printing very fine here $columns->{$one}{'formula'} = \%main_hash; #$columns is a address in $doc print Dumper $doc; #Working only for first element #exit; #print $json,$/; }