# positional parameters, directly passed to the parent class my ($sql, @bind) = $sqla->select($table, $columns, $where, $order); # named parameters, handled in this class my ($sql, @bind) = $sqla->select( -columns => \@columns, # OR: -columns => [-distinct => @columns], -from => $table || \@joined_tables, -where => \%where, -order_by => \@order, -group_by => \@group_by, -having => \%having_criteria, -limit => $limit, -offset => $offset, # OR: -page_size => $size, -page_index => $index, -for => $purpose, );