in reply to Re: Merge 2 array/Hash into 1 variable Perl
in thread Merge 2 array/Hash into 1 variable Perl

There's no need to create the %x hash then take a reference to it in $x, just use $x directly. Also, there's no need for the first foreach, just copy $h1 into $x.

johngg@shiraz:~/perl/Monks > perl -Mstrict -Mwarnings -MData::Dumper - +E ' my $h1 = { location_setting => [ q{409} ], status => [ q{501} ], }; my $h2 = { status => [ qw{ 137 124 } ], location_setting => [ q{405} ], classification => [ q{0} ], }; my $x = { %{ $h1 } }; push @{ $x->{ $_ } }, @{ $h2->{ $_ } } for keys %{ $h2 }; print Data::Dumper->Dumpxs( [ $x ], [ qw{ x } ] );' $x = { 'classification' => [ '0' ], 'status' => [ '501', '137', '124' ], 'location_setting' => [ '409', '405' ] };

I hope this is of interest.

Cheers,

JohnGG

Replies are listed 'Best First'.
Re^3: Merge 2 array/Hash into 1 variable Perl
by dbander (Scribe) on Aug 04, 2017 at 23:08 UTC

    Thank you, johngg.

    My point was to show that you have to merge the hashes manually (although you can take the shortcut with the first hash, as I see you opted to do); but I should have taken the time to write using the same techniques found in the provided sample.

    Mine was a hurried example; yours not only speaks better to the seeker, but is also a much cleaner presentation.

    Edit:Use of modules or map are probably better solutions, all things considered, but they don't teach the seeker how hashes work. Thus, the "have to" comment above is strictly in the context of doing it "by hand" without those tools.