Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: CSV File Parsing

by Tux (Monsignor)
on Feb 28, 2013 at 20:55 UTC ( #1021114=note: print w/ replies, xml ) Need Help??


in reply to CSV File Parsing

  • Do not use parse (), use getline ()
  • Use a lexical file handle
  • Never use an else branch if the if branch ends the enclosing scope (exit, return, die, last, )
  • Use auto_diag
  • Use positive logic for validation
# Use auto_diag to see all parsing errors immediately my $csv = Text::CSV_XS->new ({ binary => 1, auto_diag => 1, allow_whit +espace => 1 }); open my $fh, "<", $file_to_parse or die "Could not open '$file' $!"; while (my $row = $csv->getline ($fh)) { # Check first and third field to be numeric only (and not empty) $row->[0] =~ m/^[0-9]+$/ && $row->[2] =~ m/^[0-9]+$/ or exit; # wrong format # THERE CANNOT BE AN ELSE AFTER AN EXIT ! }

update: your sample data contains spaces. You will have to deal with those, as the current tests will fail for leading and training spaces. Adding allow_whitespace option to the constructor will help you here.


Enjoy, Have FUN! H.Merijn


Comment on Re: CSV File Parsing
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (5)
As of 2015-07-05 21:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (68 votes), past polls