use warnings;
use strict;
my @array =
(
'foo bar quux bam',
'foi bir quix bim',
'foe ber quex bem',
'foa bor quax bom',
);
my $inst1 = '4 A -4 C -4 B 2 D';
my @result1;
my @inserts;
$inst1 =~ /[\d+-]+(?: \w ([\d+-]+)(?{push @inserts, $1}))*/g;
for my $line (@array)
{
my $index = 0;
$line =~ s/\b /' '.$inserts[$index++].' '/eg;
push @result1, $line;
}
print join "\n", @result1;
####
foo -4 bar -4 quux 2 bam
foi -4 bir -4 quix 2 bim
foe -4 ber -4 quex 2 bem
foa -4 bor -4 quax 2 bom
####
foo -2 bam
foi -2 bim
foe -2 bem
foa -2 bom