use strict; use warnings; use HOP::Lexer 'make_lexer'; my $sql = <() ) ) { my ( $label, $value ) = @$token; $inside_parens += $value if 'PAREN' eq $label; print "current: $label $value \n"; my $next = $lexer->('peek'); my ( $next_label, $next_value ) = @$next; print "next $next_label $next_value \n"; # next if $inside_parens || 'TEXT' ne $label; if ( defined ( my $next = $lexer->('peek') ) ) { my ( $next_label, $next_value ) = @$next; if ( 'COMMA' eq $next_label ) { print "$value\n"; } elsif ( 'KEYWORD' eq $next_label && 'from' eq $next_value ) { print "$value\n"; last; # we're done } } }