爲什麼從__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」]。
'使用UTF8;',也許? – Zaid 2010-02-23 11:27:53
@rjh Thx,我不打算寫「printf」。 – 2010-02-23 12:35:15
@Zaid「使用utf8」會影響__DATA __-閱讀嗎? – 2010-02-23 12:37:08