use v5.20;
use DDP;
package Seq {
use Moo;
has [ 'id', 'comment', 'sequence' ] => ( is => 'rw' );
1;
}
my $parser = do {
use Regexp::Grammars;
qr/
<TOP>
<nocontext:>
<token: TOP> <[record]>+
<objtoken: Seq=record> <.start=(\>)><id><comment>?\n<sequence>
<token: id> [^\-\s\n]+
<token: comment> \s[^\n]+
<token: sequence> <dna>|<rna>|<aa>
<token: dna> [ACGTRYKMSWBDHVNX\-\n]+
<token: rna> [ACGURYKMSWBDHVNX\-\n]+
<token: aa> [A-Z\*\-\n]+
/;
};
my $content = <<'END';
>hello
GCTATATAAGC
>world prot
TATAKEKEKELKL
END
if ( $content =~ $parser ) {
p %/;
}