use strict; sub nextline { my $fh = shift; return sub { return scalar <$fh>; } } open(FOO, "somefile.txt") or die("Doh - $!"); my $nl = nextline(*FOO{IO}); print $nl->() for 0..3; close(FOO); __END__ =INPUT foo bar baz quux xxx yy z =OUTPUT foo bar baz quux