use strict; use warnings; use Data::Dumper; my $ar_ref_1 = [ [ 'USER 1', '12345', '2009', 'X', '0', '8.00', ' ', '1- E' ], [ 'USER 3', '1234567', '2009', 'X', '0', '8.00', ' ', '3- E' ], [ 'USER 2', '123456', '2009', 'X', '0', '8.00', ' ', '2- E' ], [ 'USER 5', '123456789', '2009', 'X', '0', '8.00', ' ', '5- E' ], [ 'USER 4', '12345678', '2009', 'X', '0', '8.00', ' ', '4- E' ], ]; my $ar_ref_2 = [ [ '1234567', '12', '0', '2', '0', '0', '0', '0', '0', '0', '0', '0' ], [ '123456789', '0998', '2', '2', '3', '0', '0', '0', '0', '0', '0', '0' ], [ '123456', '657', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0' ], [ '12345678', '8754', '0', '2', '0', '0', '0', '0', '0', '0', '0', '0' ], [ '12345', '876', '1', '2', '3', '0', '0', '0', '0', '0', '0', '0' ], ]; for my $i (0..$#$ar_ref_1) { for my $j (0..$#$ar_ref_2) { if($ar_ref_1->[1] == $ar_ref_2->[0]){ push @{$ar_ref_1->[$i]} +, @{ ref($ar_ref_2->[$i]) eq 'ARRAY' ? + $ar_ref_2->[$i] : [('-') x 3] }; } } } print Dumper $ar_ref_1;
[ 'USER 4', '12345678', '2009', 'X', '0', '8.00', ' ', '4- E' '12345678', # I need to exclude the duplicated element out + as well, it’s a nightmare! '8754', '0', '2', '0', '0', '0', '0', '0', '0', '0', '0' ],
In reply to Compare and merge array elements help! by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |