use utf8; use strict; use warnings; use Parse::RecDescent; use Data::Dumper; my $grammar = q{ expr: cmd cmd: cmd_say cmd_say: "SAY" /"(.+)"/ "TO CHAN" /"(.+)"/ }; my $parse = new Parse::RecDescent ($grammar); print Dumper($parse->expr("SAY \"test\" TO CHAN \"test\""));