Joining/Merging AoA
am 22.04.2008 08:35:15 von Vishal G
Hi Guys,
I have a little complicated problem...
I have two arrays
@a = ( ['id', 'name', 'age'],
['1', 'Fred', '24'],
['2', 'Frank', '42'],
);
@b = ( ['id', 'sex'],
['1', 'm' ],
['2', 'm'],
);
I want to join these two AoA, based on id, so the resulting array will
look like this
@c = ( ['id', 'name', 'age', 'sex'],
['1', 'Fred', '24', 'm' ],
['2', 'Frank', '42', 'm'],
);
Any Ideas?
Thanks in advance.
Re: Joining/Merging AoA
am 22.04.2008 17:18:45 von Darin McBride
Vishal G wrote:
> Hi Guys,
>
> I have a little complicated problem...
>
> I have two arrays
>
> @a = ( ['id', 'name', 'age'],
> ['1', 'Fred', '24'],
> ['2', 'Frank', '42'],
> );
>
> @b = ( ['id', 'sex'],
> ['1', 'm' ],
> ['2', 'm'],
> );
>
> I want to join these two AoA, based on id, so the resulting array will
> look like this
"Based on id" sounds like @a and @b won't always be in the same order...
> @c = ( ['id', 'name', 'age', 'sex'],
> ['1', 'Fred', '24', 'm' ],
> ['2', 'Frank', '42', 'm'],
> );
>
> Any Ideas?
# get everything in a map based on the first field...
my %b = map { $_->[0] => [ @$_[1..$#$_] ] } @b;
# merge ...
@a = map { [ @$_, @{$b{$_->[0]}} ] } @a;
That should be clear.... right? ;-)