开发者

How can I extract fields from a CSV file in Perl?

开发者 https://www.devze.com 2022-12-21 03:27 出处:网络
I want to extract a particular fields from a csv file (830k records) and store into hash. Is there any fast and easy way to do in Perl with out using any external methods?

I want to extract a particular fields from a csv file (830k records) and store into hash. Is there any fast and easy way to do in Perl with out using any external methods?

How can I achiev开发者_高级运维e that?


Use Text::CSV_XS. It's fast, moderately flexible, and extremely well-tested. The answer to many of these questions is something on CPAN. Why spend the time to make something not as good as what a lot of people have already perfected and tested?

If you don't want to use external modules, which is a silly objection, look at the code in Text::CSV_XS and do that. I'm constantly surprised that people think that even though they think they can't use a module they won't use a known and tested solution as example code for the same task.


assuming normal csv (ie, no embedded commas), to get 2nd field for example

 $ perl -F"," -lane 'print $F[1];' file


See also this code fragment taken from The Perl Cookbook which is a great book in itself for Perl solutions to common problems


using split command would do the job I guess. (guessing columns are separated by commas and no commas present in fields)

    while (my $line = <INPUTFILE>){
    @columns= split ('<field_separator>',$line);  #field separator is ","
    }

and then from elements of the "column" array you can construct whatever hash you like.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号