use SQL::Abstract; my $sql = SQL::Abstract->new; # get query string my ( $stmt, @bind ) = $sql->select( 'yahoo.finance.historicaldata', [ '*' ], [ -and => [ symbol => $arg{'symbols'}, endDate => $arg{'end_dt'}->ymd('-'), startDate => $arg{'start_dt'}->ymd('-'), ], ], ); ### outputs # $stmt = 'SELECT * FROM yahoo.finance.historicaldata WHERE ( ( ( symbol = ? OR symbol = ? ) AND endDate = ? AND startDate = ? ) )'; #\@bind = [ # 'VZ', # 'T', # '2013-10-19', # '2013-10-29' # ]; # ### wanted # $stmt = 'SELECT * FROM yahoo.finance.historicaldata WHERE ( ( ( symbol = VZ OR symbol = T ) AND endDate = 2013-10-29 AND startDate = 2013-10-19 ) )';