.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" 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 .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . 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 2024-04-12 "perl v5.38.2" "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.014 .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 "parser" 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 BOM (byte-order mark) for UTF\-8 or UTF\-16, 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 UTF\-8 sequences that it finds. (and, you can't disable this without also disabling unicode received from IO 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 "autodetect_encoding" 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 "ungets" 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 CSV_XS if it is installed, else CSV. .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) 2024 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.