use strictures; use Data::Query::ExprDeclare; use Data::Query::Renderer::SQL::Naive; use Moo::Role (); my $renderer; sub make_renderer { my $class = do { if ($_[0]) { Moo::Role->create_class_with_roles( 'Data::Query::Renderer::SQL::Naive', "Data::Query::Renderer::SQL::Slice::$_[0]" ) } else { 'Data::Query::Renderer::SQL::Naive' } }; $renderer = $class->new; } sub to_sql { my ($sql, @bindp) = @{$renderer->render($_[0])}; ($sql, map $_->{value}, @bindp); } 1;