Author: hmbrand
Date: Fri Jun 4 05:01:41 2010
New Revision: 14102
Modified:
dbi/trunk/lib/DBD/File.pm
Log:
tidy, recode and sanity-check.
This version also checked against DBD::CSV. All tests PASS
Go Jeff! :)
Modified: dbi/trunk/lib/DBD/File.pm
==============================================================================
--- dbi/trunk/lib/DBD/File.pm (original)
+++ dbi/trunk/lib/DBD/File.pm Fri Jun 4 05:01:41 2010
@@ -40,10 +40,10 @@
DBI->setup_driver ("DBD::File"); # only needed once but harmless to repeat
my %accessors = (
- versions => 'get_file_versions',
- get_meta => 'get_file_meta',
- set_meta => 'set_file_meta',
- clear_meta => 'clear_file_meta',
+ versions => "get_file_versions",
+ get_meta => "get_file_meta",
+ set_meta => "set_file_meta",
+ clear_meta => "clear_file_meta",
);
sub driver ($;$)
@@ -82,7 +82,7 @@
my $inject = sprintf <<'EOI', $dbclass, $method, $dbclass, $funcname;
sub %s::%s
{
- my $func = %s->can( '%s' );
+ my $func = %s->can (q{%s});
goto &$func;
}
EOI
@@ -121,12 +121,12 @@
# must be done first, because setting flags implicitly calls
$dbdname::st->STORE
$this->func ("init_valid_attributes");
- #$this->{f_ext} = "";
- $this->{f_dir} = File::Spec->curdir ();
- $this->{f_meta} = {};
- #$this->{f_map} = {};
+ # f_ext should not be initialized
+ # f_map is deprecated (but might return)
+ $this->{f_dir} = File::Spec->curdir ();
+ $this->{f_meta} = {};
$this->{f_meta_map} = {}; # choose new name because it contains other
keys
- $this->STORE (sql_identifier_case => 2); # SQL_IC_LOWER
+ $this->STORE (sql_identifier_case => 2); # SQL_IC_LOWER
$this->STORE (sql_quoted_identifier_case => 3); # SQL_IC_SENSITIVE
my ($var, $val);
@@ -146,7 +146,7 @@
elsif ($var =~ m/^(.+?)=>(.*)/s) {
$var = $1;
($val = $2) =~ s/\\(.)/$1/g;
- my $ref = eval($val);
+ my $ref = eval $val;
$this->$var ($ref);
}
}
@@ -400,7 +400,7 @@
croak "attribute '$attrib' must have a value from 1 .. 4
(SQL_IC_UPPER .. SQL_IC_MIXED)";
}
- if (($attrib =~ m/^f_/ && $dbh->{f_readonly_attrs}{$attrib} or
+ if (($attrib =~ m/^f_/ && $dbh->{f_readonly_attrs}{$attrib} or
$attrib =~ m/^sql_/ && $dbh->{sql_readonly_attrs}{$attrib}) and
defined $dbh->{$attrib}) {
croak "attribute '$attrib' is readonly and must not be modified";
@@ -416,23 +416,23 @@
sub get_versions
{
my $dbh = $_[0];
- my %version;
- $version{'DBD::File'} = $dbh->{f_version} . " using " .
$dbh->{sql_handler} . " ";
- $version{'DBD::File'} .= $dbh->{sql_handler} eq "SQL::Statement"
- ? $dbh->{sql_statement_version}
- : $dbh->{sql_nano_version};
- $version{'DBI'} = $DBI::VERSION;
- $version{"DBI::PurePerl"} = $DBI::PurePerl::VERSION if ($DBI::PurePerl);
- $version{OS} = "$^O ($Config::Config{osvers})";
- $version{Perl} = "$] ($Config::Config{archname})";
-
- my @versions;
- foreach my $vk (sort keys %version) {
- push (@versions, sprintf ("%-16s %s", $vk, $version{$vk} ));
- }
+ my %vsn = (
+ OS => "$^O ($Config::Config{osvers})",
+ Perl => "$] ($Config::Config{archname})",
+ DBI => $DBI::VERSION,
+
+ "DBD::File" => join " ",
+ $dbh->{f_version}, "using", $dbh->{sql_handler},
+ $dbh->{sql_handler} eq "SQL::Statement"
+ ? $dbh->{sql_statement_version}
+ : $dbh->{sql_nano_version},
+ );
+ $DBI::PurePerl and $vsn{"DBI::PurePerl"} = $DBI::PurePerl::VERSION;
+
+ my @versions = map { sprintf "%-16s %s", $_, $vsn{$_} } sort keys %vsn;
- return wantarray ? @versions : join ("\n", @versions);
- } # get_file_versions
+ return wantarray ? @versions : join "\n", @versions;
+ } # get_versions
sub get_file_meta
{
@@ -440,7 +440,7 @@
my $class = $dbh->FETCH ("ImplementorClass");
$class =~ s/::db$/::Table/;
- my (undef, $meta) = $class->get_table_meta( $dbh, $table, 1 );
+ my (undef, $meta) = $class->get_table_meta ($dbh, $table, 1);
$meta or croak "No such table '$table'";
# prevent creation of undef attributes
@@ -454,7 +454,7 @@
my $class = $dbh->FETCH ("ImplementorClass");
$class =~ s/::db$/::Table/;
- my (undef, $meta) = $class->get_table_meta( $dbh, $table, 1 );
+ my (undef, $meta) = $class->get_table_meta ($dbh, $table, 1);
$meta or croak "No such table '$table'";
$meta->{$attr} = $value;
@@ -467,7 +467,7 @@
my $class = $dbh->FETCH ("ImplementorClass");
$class =~ s/::db$/::Table/;
- my (undef, $meta) = $class->get_table_meta( $dbh, $table, 1 );
+ my (undef, $meta) = $class->get_table_meta ($dbh, $table, 1);
$meta and %{$meta} = ();
return;
@@ -858,23 +858,25 @@
my $cmpsub;
if ($respect_case) {
$cmpsub = sub {
- my ( $fn, undef, $sfx ) = File::Basename::fileparse( $_,
qr/\.[^.]*/ );
- return ( lc $sfx eq lc $ext or (!$req and !$sfx) ) if $fn eq $tbl;
+ my ($fn, undef, $sfx) = File::Basename::fileparse ($_, qr/\.[^.]*/);
+ $fn eq $tbl and
+ return (lc $sfx eq lc $ext or !$req && !$sfx);
return 0;
}
}
else {
$cmpsub = sub {
- my ( $fn, undef, $sfx ) = File::Basename::fileparse( $_,
qr/\.[^.]*/ );
- return ( lc $sfx eq lc $ext or (!$req and !$sfx) ) if lc $fn eq lc
$tbl;
+ my ($fn, undef, $sfx) = File::Basename::fileparse ($_, qr/\.[^.]*/);
+ lc $fn eq lc $tbl and
+ return (lc $sfx eq lc $ext or !$req && !$sfx);
return 0;
}
}
opendir my $dh, $searchdir or croak "Can't open '$searchdir': $!";
- my @f = sort { length $b <=> length $a } ( grep { &$cmpsub($_) } readdir
$dh );
- @f > 0 and @f <= 2 and $file = $f[0];
- !$respect_case and $meta->{sql_identifier_case} == 4 and # XXX SQL_IC_MIXED
+ my @f = sort { length $b <=> length $a } grep { &$cmpsub ($_) } readdir
$dh;
+ @f > 0 && @f <= 2 and $file = $f[0];
+ !$respect_case && $meta->{sql_identifier_case} == 4 and # XXX SQL_IC_MIXED
($tbl = $file) =~ s/$ext$//i;
closedir $dh or croak "Can't close '$searchdir': $!";
@@ -941,7 +943,7 @@
defined $dbh->{f_meta_map}{$table} and $table = $dbh->{f_meta_map}{$table};
my $meta = {};
- defined ($dbh->{f_meta}{$table}) and $meta = $dbh->{f_meta}{$table};
+ defined $dbh->{f_meta}{$table} and $meta = $dbh->{f_meta}{$table};
unless ($meta->{initialized}) {
$self->bootstrap_table_meta ($dbh, $meta, $table);
@@ -949,7 +951,7 @@
$self->file2table ($meta, $table, $file_is_table, $respect_case) or
return;
}
- if( defined $meta->{table_name} and $table ne $meta->{table_name} ) {
+ if (defined $meta->{table_name} and $table ne $meta->{table_name}) {
$dbh->{f_meta_map}{$table} = $meta->{table_name};
$table = $meta->{table_name};
}