> If you change $dbh->{RaiseError}=1 to $dbh->raise_error(1), what is it
> you are proposing for DBI->connect( ..., {RaiseError=>1, PrintError=0}
> )? Handle attributes are a series of name/value pairs.
Er, this is not exactly virgin territory here. Virtually every common
post-wild-west-early-days (sorry DBI, CGI.pm ;) Perl 5 modules uses
some kind of simple "named attribute" interface. Look at DateTime for
just one recent example. This is also the direction of Perl 6
interfaces.
> What more natural way is there in Perl to deal with name/value pairs than a
> hash?
Boldly speaking for the Entire Perl Community (ha!), $o->foo( ... {
... }) interfaces are generally considered icky. Who here doesn't
cringe when they see those curly braces in a newly downloaded CPAN
module's POD? It's an annoying, problem-prone way to tack
"extensibility" onto an API that has otherwise painted itself into a
corner with too many required positional params
(*cough*bind_columns(undef, ...))
> And since hashes can be tied to provide privacy and encapsulation,
> what rule does it break to use them other than the rule that objects
> have round things at the end of their arrows rather than squiggly things?
There are better ways to implement encapsulation and extensibility
than tied hashes. They're called "objects" and "methods" :) Again,
these are not theoretical, unsolved problems...
-John