H.Merijn Brand wrote: > This rocks! > > my $dbh = DBI->connect ("dbi:CSV:", undef, undef, { > RaiseError => 1, > PrintError => 1, > > f_dir => ".", > f_schema => undef, > f_ext => ".csv/r", > f_encoding => "utf8", > }); > > Any objections to me committing that?
Looks good to me and I'm pleased you are using encoding and not just ":utf8" as the former is validating utf-8 encoding and the latter does not. > --8<--- > --- /pro/3gl/CPAN/DBI-svn/lib/DBD/File.pm 2009-12-03 20:58:35.000000000 > +0100 > +++ /pro/lib/perl5/site_perl/5.12.0/i686-linux-64int-ld/DBD/File.pm > 2010-04-21 16:06:12.000000000 +0200 > @@ -163,6 +163,7 @@ sub connect ($$;$$$) > f_schema => 1, # schema name > f_tables => 1, # base directory > f_lock => 1, # Table locking mode > + f_encoding => 1, # Encoding of the file > }; > $this->{sql_valid_attrs} = { > sql_handler => 1, # Nano or S:S > @@ -724,7 +725,14 @@ sub open_table ($$$$$) > $safe_drop or croak "Cannot open $file: $!"; > } > } > - $fh and binmode $fh; > + if ($fh) { > + if (my $enc = $data->{Database}{f_encoding}) { > + binmode $fh, ":encoding($enc)"; > + } > + else { > + binmode $fh; > + } > + } > if ($locking and $fh) { > my $lm = defined $data->{Database}{f_lock} > && $data->{Database}{f_lock} =~ m/^[012]$/ > @@ -961,6 +969,11 @@ But see L</"NOWN BUGS"> below. > > =back > > +=item f_encoding > + > +With this attribute, you can set the encoding in which the file is opened. > +This is implemented using C<binmode $fh, ":encoding(<f_encoding>)">. > + > =head2 Driver private methods > > =over 4 > -->8--- > Martin -- Martin J. Evans Easysoft Limited http://www.easysoft.com