my $arr = [[qw/name pos loc age/], [qw/ike boss 12 44/], [qw/mat slave 22 21/], [qw/jill sec 15 32/],]; my $add = [[qw/car dog age/], [qw/a1 grr 3/], [qw/s2 miew 7/],]; my ($arrfld,$addfld); for ($i=0;$i<@{$arr->[0]};$i++){ $arrfld->{ $arr->[0]->[$i] } = $i } for ($i=0;$i<@{$add->[0]};$i++){ unless ( $arrfld->{ $add->[0]->[$i] } ){ $arrfld->{ $add->[0]->[$i] } = scalar(keys %$arrfld); } $addfld->{ $arrfld->{ $add->[0]->[$i] } } = $i; } foreach my $row (@$arr){ for($x=scalar(@$row);$x[$x] = defined($addfld->{$x})?$row->[$addfld->{$x}]:""; } push @$arr,$nr; }