.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Data::TableReader::Decoder::CSV 3pm" .TH Data::TableReader::Decoder::CSV 3pm "2020-08-20" "perl v5.30.3" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Data::TableReader::Decoder::CSV \- Access rows of a comma\-delimited text file .SH "VERSION" .IX Header "VERSION" version 0.011 .SH "DESCRIPTION" .IX Header "DESCRIPTION" This decoder wraps an instance of either Text::CSV or Text::CSV_XS. You may pass your own options via the \*(L"parser\*(R" attribute, which will override the defaults of this module on a per-field basis. .PP This module defaults to: .PP .Vb 5 \& parser => { \& binary => 1, \& allow_loose_quotes => 1, \& auto_diag => 2, \& } .Ve .PP This module makes an attempt at automatic unicode support: .IP "\(bu" 4 If the stream has a PerlIO \fBencoding()\fR on it, no additional decoding is done. .IP "\(bu" 4 If the stream has a \s-1BOM\s0 (byte-order mark) for \s-1UTF\-8\s0 or \s-1UTF\-16,\s0 it adds that encoding with \f(CW\*(C`binmode\*(C'\fR. .IP "\(bu" 4 Else, it lets the parser decide. The default Text::CSV parser will automatically upgrade \s-1UTF\-8\s0 sequences that it finds. (and, you can't disable this without also disabling unicode received from \s-1IO\s0 layers, which seems like a bug...) .PP Because auto-detection might need to read multiple bytes, it is possible that for non-seekable streams (like pipes, stdin, etc) this may result in an exception. Only un-seekable streams beginning with \f(CW"\exEF"\fR, \f(CW"\exFE"\fR, or \&\f(CW"\exFF"\fR will have this problem. You can solve this by supplying an encoding layer on the file handle (avoiding detection), setting \*(L"autodetect_encoding\*(R" to false, buffering the entire input in a scalar and creating a file handle from that (making it seekable), or using a file handle that supports \*(L"ungets\*(R" like FileHandle::Unget. .SH "ATTRIBUTES" .IX Header "ATTRIBUTES" .SS "parser" .IX Subsection "parser" An instance of Text::CSV or Text::CSV_XS or compatible, or arguments to pass to the constructor. Constructor arguments are passed to \s-1CSV_XS\s0 if it is installed, else \s-1CSV.\s0 .SS "autodetect_encoding" .IX Subsection "autodetect_encoding" Whether to look for a byte-order mark on the input. .SS "encoding" .IX Subsection "encoding" If autodetection is enabled, this will first check for a byte-order mark on the input. Else, or afterward, it will return whatever encoding PerlIO layer is configured on the file handle. Setting this attribute will change the PerlIO layer on the file handle, possibly skipping detection. .SS "iterator" .IX Subsection "iterator" .Vb 1 \& my $iterator= $decoder\->iterator; .Ve .PP Return an iterator which returns each row of the table as an arrayref. .SH "AUTHOR" .IX Header "AUTHOR" Michael Conrad .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" This software is copyright (c) 2019 by Michael Conrad. .PP This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.