my @numbers = (1, 2, 2, 3, 3); my @strings = qw(hello green grass rainbow pretty); my @check = (1, 2, 3, 4); my @new_strings; foreach (@numbers) { die "string $_ does not exists" unless defined $strings[$_-1]; $new_strings[$_-1] .= $strings[$_-1]; } foreach (@check) { $new_strings[$_-1] = 'xxxxxx' unless defined $new_strings[$_-1]; } print $_, "\n" for grep defined, @new_strings;