Text::Delimited - Module for parsing delimited text files
Text::Delimited provides a programattical interface to data stored in delimited
text files. It is dependant upon the first row of the text file containing
header information for each corresponding "column" in the remainder
of the file.
After instancing, for each call to Read the next row's data is
returned as a hash reference. The individual elements are keyed by their
corresonding column headings.
A short example of usage is detailed below. It opens a pipe delimited file
called 'infile.txt', reads through every row and prints out the data from
"COLUMN1" in that row. It then closes the file.
my $file = new Text::Delimited;
$file->delimiter('|');
$file->open('infile.txt');
my @header = $file->fields;
while ( my $row = $file->read ) {
print $row->{COLUMN1}, "\n";
}
$file->close;
The close() method is atuomatically called when the object
passes out of scope. However, you should not depend on this. Use
close() when approrpiate.
Other informational methods are also available. They are listed
blow:
- close()
- Closes the file or connection, and cleans up various bits.
- delimiter(delimiter)
- Allows you to set the delimiter if a value is given. The default delimiter
is a tab. Returns the delimiter.
- fields()
- Returns an array (or arrayref, depending on the requested context) with
the column header fields in the order specified by the source file.
- filename()
- If open() was given a filename, this function will return that
value.
- linenumber()
- This returns the line number of the last line read. If no calls to Read
have been made, will be 0. After the first call to Read, this will return
1, etc.
- new([filename|filepointer],[enumerate])
- Creates a new Text::Delimited object. Takes optional parameter that is
either a filename or a globbed filehandle. Files specified by filename
must already exist.
Can optionally take a second argument. If this argument
evaluates to true, Text::Delimited will append a _NUM to the end of all
fields with duplicate names. That is, if your header row contains 2
columns named "NAME", one will be changed to NAME_1, the other
to NAME_2.
- open([filename|filepointer], [enumerate])
- Opens the given filename or globbed filehandle and reads the header line.
Returns 0 if the operation failed. Returns the file object if succeeds.
Can optionally take a second argument. If this argument
evaluates to true, Text::Delimited will append a _NUM to the end of all
fields with duplicate names. That is, if your header row contains 2
columns named "NAME", one will be changed to NAME_1, the other
to NAME_2.
- read()
- Returns a hashref with the next record of data. The hash keys are
determined by the header line.
__DATA__ and __LINE__ are also returned as keys.
__DATA__ is an arrayref with the record values in order.
__LINE__ is a string with the original tab-separated
record.
This method returns undef if there is no more data to be
read.
- setmode(encoding)
- Set the given encoding scheme on the input file to allow for reading files
encoded in standards other than ASCII.
For convienience, the following methods are exportable. These are handy for
quickly writing output delimited files.
- d_join(@STUFF)
- Delimited Join. Returns the given array as a string joined with the
current delimiter.
- d_line(@STUFF)
- Delimited Line. Returns the given array as a string joined with the
current delimiter and with newline appended.
Bug tracking for this module: https://rt.cpan.org/Dist/Display.html?Name=Text-Delimited
Source hosting: http://www.github.com/bennie/perl-Text-Delimited
Text::Delimited v2.12 (2022/01/06)
(c) 2004-2022, Phillip Pollard <bennie@cpan.org>
This source code is released under the "Perl Artistic License 2.0,"
the text of which is included in the LICENSE file of this distribution. It may
also be reviewed here: http://opensource.org/licenses/artistic-license-2.0
I'd like to thank PetBlvd for sponsoring continued work on this module.
http://www.petblvd.com/
Additional contributions by Kristina Davis <krd@menagerie.tf>
Based upon the original module by Andrew Barnett <abarnett@hmsonline.com>
Originally derived from Util::TabFile 1.9 2003/11/05
With permission granted from Health Market Science, Inc.