2015-06-10 48 views
1

我已经写了一个非常简单的脚本,应该输出CSV文件第二行的第二个元素。但是,当我运行它时,我收到以下错误消息:"Uncaught exception from user code: CSV parse error: EIF - CR char inside unquoted, not part of EOL at csv.tester1.pl line 13"访问存储在.CSV文件中的数据

我在做什么错?

这是实际的代码:

#!/usr/bin/perl 
use strict; 
use warnings; 
use diagnostics; 

use Tie::Array::CSV; 

tie my @data, 'Tie::Array::CSV', 'ExampleData.csv'; 

my $length = scalar(@data); 
print $length; 
print "\n"; 
print $data[1][1]; 

而数据文件被称为ExampleData.csv是:

25201927,5.62963E+14,B,100,203300,P 
25201928,5.62963E+14,D,0,0,P 
25201928,5.62963E+14,B,400,202500,P 
+0

还看到:http://stackoverflow.com/a/9249543/468327 –

回答

0

我怀疑这是由于CSV文件发端于Windows,但在不同的平台上处理

Tie::Array::CSV将记录分隔符硬编码为LF,对于几乎任何情况都是正确的(包括Windows文件正在在Windows系统上处理),但非本地处理的Windows文件的记录将以CR LF结尾。如果我的猜想是正确的(我目前无法测试,因为我的Windows计算机上的系统盘已经在今天下午死掉了),那么你可以通过写

tie my @data, 'Tie::Array::CSV', 'ExampleData.csv', tie_file => { recsep => "\r\n" }; 

更改记录分隔符CR LF我希望这有助于

+0

你的建议,并获得成功。令人惊讶的是,虽然我只在Windows上工作,因此Perl中的文件和脚本都在同一个平台上运行。谢谢您的帮助! –

相关问题