Re: Joining/Merging AoA



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? ;-)
.