空のアクション

undef が返り、失敗するらしい

#!/usr/bin/env perl

use strict;
use Parse::RecDescent;

my $grammar =
q{
    inputs : 'a' { }
};

my $parse = new Parse::RecDescent ($grammar);

while (<>)
{
    defined $parse->inputs($_) or print "Bad text!\n";
}

で、

a
Bad text!


「1;」を書いておくと大丈夫

#!/usr/bin/env perl

use strict;
use Parse::RecDescent;

my $grammar =
q{
    inputs : 'a' { 1; }
};

my $parse = new Parse::RecDescent ($grammar);

while (<>)
{
    defined $parse->inputs($_) or print "Bad text!\n";
}

で、

a
b
Bad text!

説明では「$::debugging」という特別な変数があるようにも読めるが、そういう訳じゃないようだ。