my $Are = '^(.*)' . join('(.*)', @A) . '(.*)$';
####
my $Are = join '(.*)', '^', @A, '$';
####
my $Are = join '(.*?)', '^', (map "($_)", $A =~ /(.)/sg), '$';
####
#!/usr/bin/perl -w
use strict;
my $A = 'ATGGAGTCGACGAATTTGAAGAAT';
my $B = 'xxxxxxATGGAGyxxxTCGAzxxxxCGAATTTGAAxxwGAAT';
my $Are = join '(.*?)', '^', (map "($_)", $A =~ /(.)/sg), '$';
(my @introns = $B =~ m/$Are/)
or die "There was no possible way to match the input.";
my @seq;
while(@introns) {
my $match = shift @introns;
if(@seq and not $match) {
$seq[-1] .= shift @introns || '';
next;
}
push @seq, $match;
}
print "$A\n@seq\n";
__END__
ATGGAGTCGACGAATTTGAAGAAT
xxxxxx ATGGAG yxxx TCGA zxxxx CGAATTTGAA xxw GAAT