File::FnMatch - simple filename and pathname matching
Contents
Caveats
Most UNIX-like systems provide an fnmatch implementation. This module will not work on platforms lacking
an implementation, most notably Win32.
Copyright And License
Copyright 2005 by Michael J. Pomraning
This library is free software; you can redistribute it and/or modify it under the same terms as Perl
itself.
perl v5.40.0 2024-10-20 FnMatch(3pm)
Description
File::FnMatch::fnmatch() provides simple, shell-like pattern matching.
Though considerably less powerful than regular expressions, shell patterns are nonetheless useful and
familiar to a large audience of end-users.
Functions
fnmatch ( PATTERN, STRING [, FLAGS] )
Returns true if PATTERN matches STRING, undef otherwise. FLAGS may be the bitwise OR'ing of any
supported FNM_* constants (see below).
Constants
FNM_NOESCAPE
Do not treat a backslash ('\') in PATTERN specially. Otherwise, a backslash escapes the following
character.
FNM_PATHNAME
Prohibit wildcards from matching a slash ('/').
FNM_PERIOD
Prohibit wildcards from matching a period ('.') at the start of a string and, if FNM_PATHNAME is also
given, immediately after a slash.
Other possibilities include at least FNM_CASEFOLD (compare "qr//i"), FNM_LEADING_DIR to restrict matching
to everything before the first '/', FNM_FILE_NAME as a synonym for FNM_PATHNAME, and the rather more
exotic FNM_EXTMATCH. Consult your system documentation for details.
EXPORT
None by default. The export tag ":fnmatch" exports the fnmatch function and all available FNM_*
constants.
Name
File::FnMatch - simple filename and pathname matching
Pattern Syntax
Wildcards are the question mark ('?') to match any single character and the asterisk ('*') to match zero
or more characters. FNM_PATHNAME and FNM_PERIOD restrict the scope of the wildcards, notably supporting
the UNIX convention of concealing "dotfiles":
Bracket expressions, enclosed by '[' and ']', match any of a set of characters specified explicitly
("[abcdef]"), as a range ("[a-f0-9]"), or as the combination these ("[a-f0-9XYZ]"). Additionally, many
implementations support named character classes such as "[[:xdigit:]]". Character sets may be negated
with an initial '!' ("[![:space:]]").
Locale influences the meaning of fnmatch() patterns.
See Also
File::Glob, POSIX::setlocale, fnmatch(3)
Synopsis
use File::FnMatch qw(:fnmatch); # import everything
# shell-style: match "/a/bc", but not "/a/.bc" nor "/a/b/c"
fnmatch("/a/*", $fn, FNM_PATHNAME|FNM_PERIOD);
# find our A- executables only
grep { fnmatch("A-*.exe", $_) } readdir SOMEDIR;
