[Module]
Name=Text::CSV_PP::Iterator
Changelog.Creator=Module::Metadata::Changes V 1.08
Changelog.Parser=Config::IniFiles V 2.57
[V 1.03]
Date=2010-02-21T12:56:32
Comments= <<EOT
- Remove text 'All rights reserved' (for Debian licensing).
- Remove POD heads 'Required Modules' and 'Changes'.
EOT
[V 1.02]
Date=2010-02-10T13:53:06
Comments=- Add META.yml. Update MANIFEST.SKIP. Add MANIFEST and MYMETA.yml.
[V 1.01]
Date=2009-02-05T16:44:50
Comments= <<EOT
- Add Exception::Class and Iterator to the list of dependencies in Build.PL and Makefile.PL :-(.
- Reformat these 2 files now that I use Emacs.
- Rename Changes.txt to CHANGES since some CPAN tools refuse to recognize Changes.txt
EOT
[V 1.00]
Date=2007-06-19T16:30:45
Comments= <<EOT
- Original version
- Points of interest:
o Text::CSV_PP::Iterator reads the file for you using Iterator::IO.
Warning: Iterator::IO V 0.02 has 3 bugs in it where it does not
call throw() properly. I've reported this via http://rt.cpan.org
o All of Text::CSV_PP's new() parameters are supported by the fact
that Text::CSV_PP::Iterator subclasses Text::CSV_PP
o All data is returned as a hashref just like DBI's fetchrow_hashref()
using Text::CSV_PP::Iterator's only method fetchrow_hashref()
o The module reads the column headers from the first record in the file or ...
o The column headers can be passed in to new() if the file has none
o Non-existent file errors throw the exception Iterator::X::IO_Error
which stringifies to a nice error message if you don't catch it
o EOF returns undef to allow this neat construct:
while ($hashref = $parser -> fetchrow_hashref() ){...}
o Dependencies:
- Iterator::IO
- Text::CSV_PP
o Example code: t/test.t demonstrates:
- How to call fetchrow_hashref in isolation and in a loop
- How to call fetchrow_hashref in eval{...} and catch exceptions
EOT