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 ...
Get Programming Perl, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.