set_sql creates a *closure* named 'sql_' + key. There is no corresponding closure with a name without the 'sql_' on it. There is a set_sql in the Class::DBI module that checks the connection to make sure the correct one gets passed to the Ima::DBI set_sql method. set_sql in Ima::DBI passes the statement to _mk_sql_closure to make the closure. So sql_maxid is NOT a method, but rather a closure. There is some GLOB magic going on that makes it appear like a method. See the subs sql_set and _mk_sql_closure inside of the Ima::DBI module.
in reply to Class::DBI and Ima::DBI and ints and objects