Use DBD::Pg. DBD::PgPP has significant problems with placeholder substitution -- if a value contains a ?, that ? is treated as a placeholder, resulting in invalid SQL. There are two open tickets on the in
RT for the module, but the module hasn't been updated since 2004.