File::Glob#

📦 min

POSIX pathname globbing — expand shell-style wildcard patterns into lists of filenames.

File::Glob is what backs Perl’s built-in glob operator and its angle-bracket form <*.pl>. Give it a pattern with shell metacharacters (*, ?, [...], {a,b,c}, ~user) and you get back the list of paths on disk that match. The same machinery is exposed directly as bsd_glob when you want explicit control over flags.

The mental model is simple: a pattern goes in, a list of real filenames comes out. Behaviour is tuned by a bitmask of GLOB_* flags — tilde expansion, brace expansion, case folding, sort order, and what happens when nothing matches are all flag-controlled. Every flag has a named constant (GLOB_TILDE, GLOB_BRACE, GLOB_NOCASE, GLOB_NOMAGIC, GLOB_CSH, etc.) and they OR together.

Three call styles, same engine:

use File::Glob ':bsd_glob';
my @pl  = <*.pl>;                               # angle-bracket form
my @c   = bsd_glob('*.[ch]');                   # function form, default flags
my @hd  = bsd_glob('~gnat', GLOB_TILDE | GLOB_ERR);

The default flag set is GLOB_CSH — brace expansion, tilde expansion, backslash quoting, alphabetical sort, and the GLOB_NOMAGIC fallback that returns the literal pattern when it has no metacharacters and doesn’t match. Two import tags nudge the default: :nocase turns GLOB_NOCASE on globally, :case turns it off.

Functions#

Globbing#

bsd_glob#

Expand a shell-style pattern and return the list of matching paths.

csh_glob#

Expand a pattern using the default flag set — the engine behind Perl’s built-in glob.

glob_error#

Report the error status of the most recent bsd_glob call.