2010-02-23 62 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

)它的工作原理(儘管沒有「找不到文件」這樣的信息)。

相關問題