use warnings; use strict; my @a = qw(0 1 5 7 9 5 3); my @b = qw(a b c y e f z a a); my @new; my $scanA = 0; for my $nextB (@b) { if ($nextB =~ /[yz]/) { push @new, 'I'; } else { last if $scanA >= @a; push @new, $a[$scanA++]; } } print "@new";