NAME
Path::Tiny::Glob - File globbing utility
VERSION
version 0.1.0
SYNOPSIS
use Path::Tiny::Glob;
my $dzil_files = pathglob( '~/work/perl-modules/**/dist.ini' );
while( my $file = $dzil_files->next ) {
say "found a Dist::Zilla project at ", $file->parent;
}
DESCRIPTION
This module exports a single function by default, pathglob.
EXPORTED FUNCTIONS
pathglob
$list = pathglob( $glob );
$list = pathglob( \@path_segments );
This function takes in a shell-like file glob, and returns a Lazy::List of Path::Tiny objects matching it.
Caveat: backtracking paths using .. doesn't work.
The function can also take an arrayref of path segments.
The segments can be strings, in which case they are obeying
the same globbing patterns as the stringy $glob.
$list = pathglob( [ 'foo', 'bar', '*', 'README.md' ] );
# equivalent to
$list = pathglob( 'foo/bar/*/README.md' );
The segments, however, can also be coderefs, which will
be passed Path::Tiny objects both as their argument and
as $_, and are expected to return true if the path
is matching.
$big_files = pathglob( [ 'foo/bar/**/', sub { -f $_ and -s $_ > 1E6 } );
The segments can also be regexes, in which case they will be
compared to the paths' current basename.
@readmes = pathglob( [ 'foo/bar/**/', /^readme\.(md|mkd|txt)$/i );
Supported globbing patterns
-
*Matches zero or more characters.
-
?Matches zero or one character.
-
**Matches zero or more directories.
If
**is the last segment of the path, it'll return all descendent files.
is_globby
my $globby = is_globby( './foo/*/bar' );
Returns true if the argument contains any glob character (so ? or *).
Can be useful to determine if the input was an explicit path or a glob.
Not exported by default.
SEE ALSO
AUTHOR
Yanick Champoux yanick@cpan.org 
COPYRIGHT AND LICENSE
This software is copyright (c) 2019, 2018 by Yanick Champoux.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.