my %lkup = map { $_->[0] => $_ } @$ar_ref_2; for (@$ar_ref_1) { my $key = $_->[1]; if (my $extra = $lkup{$key}) { push @$_, @$extra[ 1..$#$extra ]; } else { warn("Bad join for $key\n"); push @$_, (undef)x11; } }