Rand Stats



Build Status


IO::Dir - IO::Path.dir you can close


    # Won't always suit, since non-exhausted iterator holds on to an open
    # file descriptor until GC:

    # all good; we explicitly close the file descriptor when done
    .dir[^3].say and .close with IO::Dir.open: 'foo';


IO::Path.dir does the job well for most cases, however, there's an edge case where it's no good:

If you're in that category, then good news! IO::Dir gives you a dir whose file descriptor you can close without relying on GC or having to fully reify the dir's Seq.



Creates a new IO::Dir object. Takes no args.


Opens for reading directory given as a positional argument, which can be any object that can be coerced to IO::Path via .IO method. Defaults to opening '.' directory.

Will first .close the invocant if it was previously opened.

    $dir2.open: 'foo';


Takes similar arguments as IO::Path.dir, that have the same meaning, returning the same type of Seq. Will .close the invocant when the result is exhausted.

The additional arguments are boolean :absolute and :Str that control whether to return absolute paths when dir was opened via an absolute path and whether to return paths as IO::Path or Str objects.

Note: you cannot call .dir more than once; re-open the invocant or create a new IO::Dir if you need that. Will die if called on an un-opened IO::Dir.

    # Explicit close:
    .dir[^3].say and .close with IO::Dir.open: 'foo';

    # Implicit close (arrays are mostly-eager, so our Seq is exhausted here)
    my @files = IO::Dir.open('foo').dir;


Closes an open IO::Dir, freeing the file descriptor.

    .dir[^3].say and .close with IO::Dir.open: 'foo';


Fork this module on GitHub: https://github.com/raku-community-modules/IO-Dir


To report bugs or request features, please use https://github.com/raku-community-modules/IO-Dir/issues


Zoffix Znet (http://perl6.party/)


You can use and distribute this module under the terms of the The Artistic License 2.0. See the LICENSE file included in this distribution for complete details.

The META6.json file of this distribution may be distributed and modified without restrictions or attribution.