| Data-Package-CSV documentation | Contained in the Data-Package-CSV distribution. |
Data::Package::CSV - A Data::Package class for CSV data using Parse::CSV
The Data::Package::CSV package provides a subclass of Data::Package::File that provides data from a CSV file by integrating with Parse::CSV.
The cvs_options method is the most direct method, with full control over the creation of the Parse::CSV object. If a fully compliant options hash is returned (as a list) then no other methods need to be defined.
The list returned by the cvs_options method will be passed directly to the Parse::CSV constructor. Read the documentation for Parse::CSV for more details on what you should return to match your data.
By default, the null list is return, specifying entirely default options to the Parse::CSV constructor (array mode) and not specifying any filters or parsing variations.
If it list that is returned does not have either a data source (either a
handle param or file param) then the file method for the parent
class will be called to locate a file.
Bugs should always be submitted via the CPAN bug tracker.
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Data-Package-CSV
For other issues, contact the maintainer
Adam Kennedy <adamk@cpan.org>
Copyright 2007 Adam Kennedy.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included with this module.
| Data-Package-CSV documentation | Contained in the Data-Package-CSV distribution. |
package Data::Package::CSV;
use 5.005; use strict; use base 'Data::Package::File'; use Parse::CSV (); use vars qw{$VERSION}; BEGIN { $VERSION = '1.01'; } sub import { return 1 if $_[0] eq __PACKAGE__; return shift->SUPER::import(@_); } ##################################################################### # Data::Package::CSV Methods
sub csv_options { return (); } ##################################################################### # Data::Package Methods sub _provides { my @provides = shift->SUPER::_provides(@_); return ( 'Parse::CSV', @provides ); } sub __as_Parse_CSV { my $class = ref($_[0]) || $_[0]; # Get the main options my %options = $class->csv_options; unless ( $options{handle} or $options{file} ) { delete $options{file}; delete $options{handle}; # Locate the data my $file = $class->file; if ( $file ) { $options{file} = $class->file; delete $options{handle}; } else { die "No CSV file found for $class"; } } # Create the parser object my $parse_csv = Parse::CSV->new( %options ); unless ( $parse_csv ) { die "Failed to create Parse::CSV object for $class"; } return $parse_csv; } 1;