2010-02-23 189 views
3

为什么从__DATA__读取数据并从文件中读取数据不会(松散的未转义报价)?为什么DBD :: CSV抱怨“松散的未转义报价”?

#!/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" 

输出: “数据”
1; “室内乐附耳Blaeser”; 16; “DG”; “口才”; “dc129610”
2; “安魂曲 - Laudate Dominum Exultate,欢喜”; 19 ; “DG”; “口才”; “0a11f513”

“数据” 或 “输入”:数据
室内乐附耳Blaeser
安魂曲 - Laudate Dominum Exultate,欢喜


输出: “回车”
1; “室内乐附耳Blaeser”; 16; “DG”; “口才”; “dc129610”
2; “安魂曲 - Laudate Dominum Exultate,欢喜”; 19; “DG”; “口才”, “0a11f513”

“数据” 或 “输入”:
DBD :: CSV :: ST执行所失败:
执行错误:错误2034在阅读文件./klassik_CD.csv:EIF - 松散/usr/local/lib/perl5/site_perl/5.10.1/DBD/CSV.pm行220
上的未转义报价。

[for语句 “SELECT * FROM klassik_CD.csv”]在./zzzzzzzzzz.pl线27
DBD :: CSV :: ST fetchrow_hashref失败:尝试抓取行未经前述execute()调用或从当我将文件从“klassik_CD.csv”重命名为“klassik_cd.csv”(全部为小写字母)时,它将在./zzzzzzzzzz.pl第28行显示一个非SELECT语句[用于语句“SELECT * FROM klassik_CD.csv”]。

+0

'使用UTF8;',也许? – Zaid 2010-02-23 11:27:53

+0

@rjh Thx,我不打算写“printf”。 – 2010-02-23 12:35:15

+0

@Zaid“使用utf8”会影响__DATA __-阅读吗? – 2010-02-23 12:37:08

回答

0

)它的工作原理(尽管没有“找不到文件”这样的信息)。

相关问题