while (my @chunk = get_chunk(\*IN, 10)) { # etc } sub get_chunk { my $fh = shift; my $count = shift; my @result; push @result, scalar <$fh> foreach 1..$count; return @result; }