The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.


DBIx::Printf::Named - A named-printf-style prepared statement


  use DBIx::Printf::Named;

  use DBIx::Printf;

  my $sql = $dbh->nprintf(
      'select * from t where str=%(str)s or int=%(int)d or float=%(float)f',
          str => 'string',
          int => 1,
          float => 1.1e1


DBIx::Printf::Named is a named-printf-style prepared statement. It adds a nprintf method to DBI::db package. This module is based on DBIx::Printf by kazuho oku.

nprintf(stmt, { key1 => value1, key2 => value2 })

Builds a SQL statement from given statement with placeholders and values. Following placeholders are supported.

  %(key)d         - integer
  %(key)f         - floating point
  %(key)s         - string
  %(key)t         - do not quote, pass thru
  %like(fmt) - formats and quotes a string for like expression

%like example

Below is an example of using the %%like placeholder. Since metacharacters of supplied parameters are escaped, the example would always by a prefix search.

  $dbh->printf('select * from t where name like %like(%(name)s%%)', { name => $name });


Masahiro Nagano <kazeburo {at}>




This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.