1 # <a name="Package <code>TWiki::_LineIterator="></a> Package =TWiki::LineIterator
3 Iterator over the lines in a file
7 <li><a href="#Package =TWiki::_LineIterator="> Package TWiki::LineIterator</a><ul>
8 <li><a href="#new( $file )"> new( $file )</a></li>
9 <li><a href="#hasNext() -> $boolean"> hasNext() -> $boolean</a></li>
10 <li><a href="#next() -> $data"> next() -> $data</a></li>
16 ## <a name="new( $file )"></a> new( $file )
18 Create a new iterator over the given file. if the file cannot be opened, then there will be no elements in the iterator.
20 ## <a name="hasNext() - $boolean"></a> hasNext() -> $boolean
22 Returns false when the iterator is exhausted.
24 my $it = new TWiki::ListIterator(\@list);
25 while ($it->hasNext()) {
28 ## <a name="next() - $data"></a> next() -> $data
30 Return the next line in the file.
32 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:
34 - `{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.
35 - `{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.
39 my $it = new TWiki::LineIterator("/etc/passwd");
40 $it->{filter} = sub { $_[0] =~ /^.*?:/; return $1; };
41 $it->{process} = sub { return "User $_[0]"; };
42 while ($it->hasNext()) {