NAME

Iterator::File::Line - Iterate A File By Line

SYNOPSIS

  use Iterator::File::Line;

  my $iter = Iterator::File::Line->new(
    filename => $filename,
  );
  my $iter = Iterator::File::Line->new_from_fh( );

  while ( my $line = $iter->next ) {
    # Do something with $line
  }

  # You want to parse TSV-ish content?
  my $iter = Iterator::File::Line->new(
    filename => "data.tsv",
    filter   => sub { return [ split(/\t/, $_[0]) ] }
  );

  while ( my $cols = $iter->next ) {
    print $cols->[0], "\n";
  }

DESCRRIPTION

Iterator::File::Line is a simple iterator that iterates over the contents of a file, which must be a regular line-based text file.

METHODS

new

new_from_file

new_from_fh

  Iterator::File::Line->new( filename => $filename );
  Iterator::File::Line->new( fh => $open_file_handle );
  Iterator::File::Line->new_from_filename( filename => $filename );
  Iterator::File::Line->new_from_fh( fh => $open_file_handle );
  Iterator::File::Line->new(
    filename => $filename,
    filter   => \&sub,
    chomp    => $boolean,
    encoding => 'cp932',
    eol      => 'LF', # see PerlIO::eol
  );

Creates a new iterator instance. new_from_file requires a filename argument, while new_from_Fh requires a fh argument. new() accepts either.

If a filter argument is given, then that coderef is used to filter the incoming line. You can, for example, use this to deconstruct a CSV/TSV content. However, do note that since this is a simple line based iterator, it won't work for multi-line CSV values.

If chomp is specified, the line's ending new line is chomped. By default this is on.

If eol is specified, the line's ending new line is normalized to that value. This is done via PerlIO::eol

If encoding is specified, the incoming data is decoded into perl's native unicode. This is done via PerlIO::encoding

Please be careful with eol and encoding, as it will change the Perl IO layer associated with that file handle. You are better off not sharing the filehandle somewhere else in your code.

next

Returns the next chunk. If you specified a filter, this may be a structure. otherwise it's the next line

rewind

Rewinds the iterator to the beginning of the buffer

AUTHOR

Copyright (c) 2008 Daisuke Maki <daisuke@endeworks.jp>

LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See http://www.perl.com/perl/misc/Artistic.html