Difference: TWikiLineIteratorDotPm ( vs. 1)

Revision 12008-01-22 - TWikiContributor

Line: 1 to 1
Added:
>
>

Package TWiki::LineIterator

Iterator over the lines in a file

new( $file )

Create a new iterator over the given file. if the file cannot be opened, then there will be no elements in the iterator.

hasNext() -> $boolean

Returns false when the iterator is exhausted.

my $it = new TWiki::ListIterator(\@list);
while ($it->hasNext()) {
   ...

next() -> $data

Return the next line in the file.

The iterator object can be customised to pre- and post-process entries from the list before returning them. This is done by setting two fields in the iterator object:

  • {filter} can be defined to be a sub that filters each entry. The entry will be ignored (next() will not return it) if the filter returns false.
  • {process} can be defined to be a sub to process each entry before it is returned by next. The value returned from next is the value returned by the process function.

For example,

my $it = new TWiki::LineIterator("/etc/passwd");
$it->{filter} = sub { $_[0] =~ /^.*?:/; return $1; };
$it->{process} = sub { return "User $_[0]"; };
while ($it->hasNext()) {
    my $x = $it->next();
    print "$x\n";
}
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 1999-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors. <br /> Ideas, requests, problems regarding lt;nopgt;TWiki? lt;a href='mailto:twiki-admin@kcl.ac.uk?subject=TWiki%20Feedback%20on%20TWiki.TWikiLineIteratorDotPm'gt;Send feedbacklt;/agt; <br /> Note: Please contribute updates to this topic on TWiki.org at <a href="http://twiki.org/cgi-bin/view/TWiki/TWikiLineIteratorDotPm" target="twiki.org">TWiki:TWiki.TWikiLineIteratorDotPm</a>.