Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re: parsing csv with Text::ParseWords

by Marshall (Canon)
on Oct 08, 2009 at 22:06 UTC ( #800109=note: print w/replies, xml ) Need Help??


in reply to parsing csv with Text::ParseWords

I don't have Text::ParseWords installed on my system now. but tried a re-formulation of your code (untested), yes this last line is trouble!
#!/usr/bin/perl use warnings; use strict; use diagnostics; use Text::ParseWords; my $csvfilename = "data.csv"; open( FILE, "<", $csvfilename" ) or die("Couldn't open CSV file $csvfilename:$!\n"); while ( my $line = <FILE> ) { my @fields = quotewords( ',', 0, $line ); #no & needed! #print will bomb with undef value later if problem #or ( warn "problem on line $.:$_" ); #but maybe you want something like this... warn ("less than 6 things on $line") if @fields <6; my ($id,$brand,$dbt,$cdt,$color,$number) = (@fields)[0..5]; #my ($id,$brand) = (@fields)[0,1]; if all you need is id and brand # print "@fields\n"; #prints all fields space separated print join("\t",@fields),"\n"; #now with tab sparated print "array size = ", scalar(@fields) , "\n"; print "$id\t$brand\n"; }
Update:
So the short version would be like:
#!/usr/bin/perl -w use strict; use diagnostics; use Text::ParseWords; my $csvfilename = "data.csv"; open( FILE, "<", $csvfilename" ) or die("Couldn't open CSV file $csvfilename:$!\n"); while ( my $line = <FILE> ) { my @fields = quotewords( ',', 0, $line ); #no & before #quotewords() needed! my ($id,$brand,) = (@fields)[0,1]; print "$id\t$brand\n"; }

Replies are listed 'Best First'.
Re^2: parsing csv with Text::ParseWords
by GertMT (Hermit) on Oct 09, 2009 at 11:31 UTC

    thank you for the two scripts. Especially the first one really helps me to better understand how to print the various elements of the array.

    the EOL problem remained. I'm only achieving a structured output after opening/saving the 'data.csv'. I'll probably look for another solution (ask different data-file).

    Gert

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://800109]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (6)
As of 2021-12-01 16:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    R or B?



    Results (13 votes). Check out past polls.

    Notices?