my $iter = do { my $i; sub { $i < @values ? $values[$i++] : <$filehandle> } }; while ( my $line = $iter->() ) { ## do stuff ... }