, , , , ,
use strict;
use warnings 'all';
use feature 'say';
my $line = 'MZEFSRGGRMEAZFE*MQZEFFMAEZF*';
my @orf;
{
my (@s, @e);
push @s, $-[0] while $line =~/M/g;
push @e, $+[0] while $line =~/\*/g;
for my $s ( @s ) {
for my $e ( @e ) {
push @orf, substr $line, $s, $e-$s if $e > $s;
}
}
}
say for @orf;
MZEFSRGGRMEAZFE*
MZEFSRGGRMEAZFE*MQZEFFMAEZF*
MEAZFE*
MEAZFE*MQZEFFMAEZF*
MQZEFFMAEZF*
MAEZF*