in reply to Returning contents of subrules matches with Parse::RecDescent

try changing 'tuple' to this:
tuple: (number dot { \@item })(2) tuple_rest(s?) { \@item }