my %lookup = map { $_->[0] => $_ } @m_info; # key each array by its first entry. foreach my $record (@data) { my $data = $lookup{$record->[1]}; $record->[1] = "$data->[3]_$data->[1]" if $data; }