File::Glob
use File::Glob ':glob'; # Override glob built-in.
@list = <*.[Cchy]>; # Now uses POSIX glob, not csh glob.
use File::Glob qw(:glob csh_glob);
@sources = bsd_glob("*.{C,c,h,y,pm,xs}", GLOB_CSH);
@sources = csh_glob("*.{C,c,h,y,pm,xs}"); # (same thing)
use File::Glob ':glob';
# call glob with extra arguments
$homedir = bsd_glob('~jrhacker', GLOB_TILDE | GLOB_ERR);
if (GLOB_ERROR) {
# An error occurred expanding the home directory.
}The File::Glob module's
bsd_glob function implements the
glob (3) routine from the C library. An
optional second argument contains flags governing additional matching
properties. The :glob import tag imports both the
function and the necessary flags.
The module also implements a csh_glob
function. This is what the built-in Perl glob and
GLOBPAT fileglobbing operators really call.
Calling csh_glob is (mostly) like calling
bsd_glob this way:
bsd_glob(@_ ? $_[0] : $_,
GLOB_BRACE | GLOB_NOMAGIC | GLOB_QUOTE | GLOB_TILDE);If you import the :glob tag, then all calls
to the built-in fileglobbing operators in the current package will
really call the module's bsd_glob function instead
of its csh_glob function. One reason you might want
to do this is that, although bsd_glob handles
patterns with whitespace in them correctly,
csh_glob handles them, um, in the historical
fashion. Old scripts would write <*.c *.h> to
glob both of those. Neither function is bothered by whitespace in the
actual filenames, however.
The bsd_glob function takes an argument containing ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access