Why is DBD :: CSV complaining about a "Loose unescaped quote"?

Why is reading from __DATA__ work and reading from a file fail (Loose unescaped quote)?

#!/usr/bin/env perl
use warnings; use strict; use 5.010;
use DBI;

my $table = 'klassik_CD.csv';
print qx(cat $table);

print qq{\n"data" or "Enter" : };
chomp( my $aw = <> );

if ( $aw eq 'data' ) {
    $table = 'te_mp_fi_le.csv';
    open my $fh, '>', $table or die $!;
    while ( defined( my $row = <DATA> ) ) {
    print $fh $row;
    }
    close $fh or die $!;
}

my $dbh = DBI->connect( "dbi:CSV:", { RaiseError => 1 } );
$dbh->{csv_tables}{$table} = { col_names => [], sep_char => ';' };

my $sth = $dbh->prepare( "SELECT * FROM $table" );
$sth->execute;
while ( defined( my $row = $sth->fetchrow_hashref ) ) {
    say $row->{col1};
}

__DATA__
1;"Kammermusik fuer Blaeser";16;"DG";"eloquence";"dc129610"
2;"Requiem – Laudate Dominum Exultate, jubilate";19;"DG";"eloquence";"0a11f513"

Exit: “data”
1, “Kammermusik fuer Blaeser”, 16, “DG”, “eloquence”, “dc129610”
2, “Requiem - Loudat Domin Exultat, rejoicing”, 19, “DG”, “eloquence”, “0a11f513 "

“data” or “Enter”: data
Kammermusik fuer Blaeser
Requiem - Laudat Dominic Exult, glee


: "Enter"
1, "Kammermusik fuer Blaeser", 16, "DG", "", "dc129610"
2, " - , ", 19, "", "", "0a11f513"

"" "Enter":
DBD:: CSV:: st :
ERROR: 2034 . /klassik _CD.csv: EIF - /usr/local/lib/perl 5/site_perl/5.10.1/DBD/CSV.pm line 220
,

[ "SELECT * FROM klassik_CD.csv" ] . /zzzzzzzzzz.pl 27.
DBD:: CSV:: st fetchrow_hashref : execute() SELECT [ SELECT * FROM klassik_CD.csv "] . /zzzzzzzzzz.pl 28.

+3
1

"klassik_CD.csv" "klassik_cd.csv" ( ), ( , " " ).

0

Source: https://habr.com/ru/post/1734044/


All Articles