为什么从__DATA__读取工作并从文件中读取不是(松散未转义的引用)?
#!/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;“Kammermusik fuer Blaeser”; 16;“DG”;“eloquence”;“dc129610”
2;“Requiem - Laudate Dominum Exultate,jubilate”; 19;“DG”;“eloquence”;“0a11f513”
“data”或“Enter”:数据
Kammermusik fuer Blaeser
安魂曲 - Laudate Dominum Exultate,jubilate
输出:“输入”
1;“Kammermusik fuer Blaeser”; 16;“DG”;“eloquence”;“dc129610”
2;“Requiem - Laudate Dominum Exultate,jubilate”; 19;“DG”;“eloquence”;“0a11f513”
“数据”或“输入”:
DBD :: CSV :: st执行失败:
执行错误:读取文件时出现错误2034 ./klassik_CD.csv:EIF - 在/usr/local/lib/perl5/site_perl/5.10.1/DBD/CSV.pm第220行中无松动的未报价单
。
[对于声明“SELECT * FROM klassik_CD.csv”]在./zzzzzzzzzz.pl第27行。
DBD :: CSV :: st fetchrow_hashref失败:尝试在没有前面的execute()调用的情况下获取行,或者从./zzzzzzzzzz.pl第28行的非SELECT语句[for Statement“SELECT * FROM klassik_CD.csv”]获取行。 / p>
答案 0 :(得分:0)
当我将文件从“klassik_CD.csv”重命名为“klassik_cd.csv”(全部小写)时,它可以正常工作(尽管没有“找不到文件”这样的消息)。