FYI, $text (remaining unmatched text) cannot be used as a start-up action to preprocess text before parsing:
Global symbol "$text" requires explicit package name at ./pt2hum line 58. Execution of ./pt2hum aborted due to compilation errors. my $g2 = <<EOG; { ##Alter separation character $text =~ tr/_/ /; } foo: /\w+/ EOG my $parser = Parse::RecDescent->new($g2) or die "bad grammar\n"; Colin