小编Car*_*e18的帖子

Perl中速度最快的CSV解析器

我正在创建一个子程序:

(1)解析CSV文件;

(2)并检查该文件中的所有行是否具有预期的列数.如果列数无效,则会出现问题.

如果行数从数千到数百万不等,您认为最有效的方法是什么?

现在,我正在尝试这些实现.

(1)基本文件解析器

open my $in_fh, '<', $file or 
    croak "Cannot open '$file': $OS_ERROR";                                                            

my $row_no = 0;                                                                                           
while ( my $row = <$in_fh> ) {                                                                            
    my @values = split (q{,}, $row);                                                                      
    ++$row_no;                                                                                            
    if ( scalar @values < $min_cols_no ) {                                                                
        croak "Invalid file format. File '$file' does not have '$min_cols_no' columns in line '$row_no'.";
    }                                                                                                     
}                                                                                                         

close $in_fh                                                                                              
    or croak "Cannot close '$file': $OS_ERROR";                                                           
Run Code Online (Sandbox Code Playgroud)

(2)使用Text :: CSV_XS(bind_columns和csv-> getline)

my $csv = Text::CSV_XS->new () …
Run Code Online (Sandbox Code Playgroud)

csv perl parsing

11
推荐指数
2
解决办法
2779
查看次数

标签 统计

csv ×1

parsing ×1

perl ×1