Re: New DBD::File feature - can we do more with it?

Darren Duncan <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.sybase.devel
Message-ID <[email protected]>
H.Merijn Brand wrote:
> A bit more thought leads to better portability ...
> 
> my $hash = {
> 
>     meta => {
>         f_dir       => "data",
>         f_schema    => undef,
>         f_ext       => ".csv/r",
>         f_encoding  => "utf8",
>         f_lock      => 1,
>         },

Something very important here, arguably the most important thing to get right at 
the start, is that the API has to be versioned.

We have to start off with a ridiculously simple metaformat, such as simply a 
2-element array.  The first element of this array declares the version of the 
format of the metadata, where that is provided as the second element.

For example:

   my $dbh = DBI->connect ("dbi:CSV:", undef, undef, {
     meta => [['DBI','http://dbi.perl.org/','0.001'],{
       ...
     }],
   }) or die DBI->errstr;

Or if that's too complicated, then:

   my $dbh = DBI->connect ("dbi:CSV:", undef, undef, {
     meta => ['0.001',{
       ...
     }],
   }) or die DBI->errstr;

The format here is based on that used by Perl 6 for fully-qualified Perl or 
module names, with parts [base-name, authority, vnum].  Something similar is 
also mandated by Muldis D for starting off code written in it.

For that matter, look at the META.yml files bundled with Perl modules these 
days, which declare the version of the spec they adhere to.

The point is that we will give ourselves a lot of room to evolve cleanly if we 
start using declared versions in the beginning, so that any subsequent version 
of DBI can interpret the user arguments unambiguously to their intent, because 
the users are telling them, the input is in this version of the format.

The second element can even change over time, say from a hash-ref to an 
array-ref or vice-versa, depending what the first element is.

So I strongly suggest starting from the point of mandating declared versions and 
go from there.

-- Darren Duncan
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.