#!/usr/bin/perl -w use strict; use warnings; sub NEXTVAL { $_[0]->() } sub Iterator (&) { return $_[0] } sub filehandle_iterator { my $fh = shift; return Iterator { <$fh> }; } my $it = filehandle_iterator(*DATA); for (1..2) { print NEXTVAL($it); } __END__ line 1 line 2 line 3 line 4 line 5