I much prefer
use Text::CSV_XS; use IO::File;
my $io = IO::File->new( $filename, '<' ) or die "Can't read $filename:
+ $!";
my $csv = Text::CSV_XS->new();
until ( $io->eof ) {
my $row = $csv->getline($io));
# do something with the ARRAYref $row
}
It's not much longer, but provides all kinds of error handling, is easier to maintain (and easier to read), and handles all the ins and outs of escaping, etc. As idsfa says, "CSV is hard".
Not only that, Text::CSV_XS is really fast to boot.
Don't do stuff yourself that others have already done and tested thoroughly -- this is true Laziness.
<–radiant.matrix–>
Ramblings and references
The Code that can be seen is not the true Code
I haven't found a problem yet that can't be solved by a well-placed trebuchet
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|