> On 16 Jun 2018, at 10:59, Xin Cheng <xinchen...@gmail.com> wrote:
> I am wondering why the IO::Path class doesn't have a "close" method. After I 
> read from a file by
> 
> $filename.IO.lines -> $line;
> 
> Am I supposed to close the file, or it is automatically closed for me after 
> the reading?

If you read all of the lines from the file, then yes, the file will be closed 
automatically for you.  This is *not* the case if you stop reading lines after 
a while.  If you really want to be sure that the file will be closed in that 
case, you will need to do that yourself by opening the file first, e.g. like 
this:

    with open($filename) -> $handle {
        LEAVE $handle.close;
        for $handle.lines -> $line {
            return if $line eq ‘foo’;  # will close
        }
    }

As soon as the scope of “with” is left, in whatever way, the file will be 
closed by the LEAVE phaser.



Liz

Reply via email to