#!/usr/bin/perl use Parse::RecDescent; use Test::More 'no_plan'; my $grammar = q { argument: element ((comma element)(s))(?) element: /[\w.-_]+/ comma: ',' }; my $sql = Parse::RecDescent->new( $grammar ); while ( chomp( my $test = ) ) { my ( $result, $statement ) = split /,/, $test, 2; ok( defined $sql->argument( $statement ) == $result, $test ); } __DATA__ 0, 1,arg1 0,arg1, 1,arg1,arg2 0,arg1,arg2, 1,arg1,arg2,arg3