use strict; use warnings; my @a = qw{ 0 1 5 7 9 5 3 }; my @b = qw{ a b c y e f z a a }; die qq{Element count mismatch\n} unless scalar @b == scalar @a + grep m{[yz]}, @b; print qq{@a\n@b\n}; my $offA = $#a; foreach my $offB ( reverse 0 .. $#b ) { if( $b[ $offB ] =~ m{[yz]} ) { splice @a, $offA + 1, 0, q{I}; } else { $offA --; } } print qq{@a\n}; #### 0 1 5 7 9 5 3 a b c y e f z a a 0 1 5 I 7 9 I 5 3