Lembre-se apenas da parte "interessante" da linha anterior e adicione-a quando a linha começar com "AA", "BB" ou "MTD" (no último caso, apenas a parte curta da string é substituída):
#!/usr/bin/perl
use warnings;
use strict;
my @repeat;
while (my $line = <>) {
chomp $line;
if (my ($first, $second) = $line =~ /^MTD.{8}(...)(.*?) /) {
$repeat[0] //= $first;
$repeat[1] = $second;
substr $line, 11, 3, $repeat[0];
}
if ($line =~ /^([AB]) /) {
substr $line, 11, 0, $repeat[0] . $repeat[1];
}
print "$line\n";
}