On Tue, Oct 9, 2018 at 8:49 AM ToddAndMargo via perl6-users <
perl6-users@perl.org> wrote:

>
> I am not getting anywhere with `.lines`.  Read the whole thing in the
> first line.
>
> $ p6 'my $fh=open "/home/linuxutil/WhoIsMySub.pl6", :r;  while my $f =
> $fh.lines { say "$f\n"}; $fh.close;'
>

.lines() creates Seq (https://docs.perl6.org/type/Seq) that is a lazy list
of all the lines in the file.

Your while loop calls it once, which makes that Seq, Inside your first
loop, which prints it, the Stringify iterates the Seq, printing all the
lines.
The second call to .lines() returns nothing because you're now at eof, no
more lines.

Note the Seq that .lines returns itself is lazy.  It doesn't (necessarily)
have all the lines, just the capability to get them.
As you iterate the Seq, it pulls in all the lines.

Curt

Reply via email to