\section{\module{fnmatch} ---
         \UNIX{} filename pattern matching}

\declaremodule{standard}{fnmatch}
\modulesynopsis{\UNIX\ shell style filename pattern matching.}


\index{filenames!wildcard expansion}

This module provides support for \UNIX{} shell-style wildcards, which
are \emph{not} the same as regular expressions (which are documented
in the \refmodule{re}\refstmodindex{re} module).  The special
characters used in shell-style wildcards are:

\begin{tableii}{c|l}{code}{Pattern}{Meaning}
  \lineii{*}{matches everything}
  \lineii{?}{matches any single character}
  \lineii{[\var{seq}]}{matches any character in \var{seq}}
  \lineii{[!\var{seq}]}{matches any character not in \var{seq}}
\end{tableii}

Note that the filename separator (\code{'/'} on \UNIX{}) is \emph{not}
special to this module.  See module
\refmodule{glob}\refstmodindex{glob} for pathname expansion
(\refmodule{glob} uses \function{fnmatch()} to match pathname
segments).  Similarly, filenames starting with a period are
not special for this module, and are matched by the \code{*} and
\code{?} patterns.


\begin{funcdesc}{fnmatch}{filename, pattern}
Test whether the \var{filename} string matches the \var{pattern}
string, returning true or false.  If the operating system is
case-insensitive, then both parameters will be normalized to all
lower- or upper-case before the comparison is performed.  If you
require a case-sensitive comparison regardless of whether that's
standard for your operating system, use \function{fnmatchcase()}
instead.
\end{funcdesc}

\begin{funcdesc}{fnmatchcase}{filename, pattern}
Test whether \var{filename} matches \var{pattern}, returning true or
false; the comparison is case-sensitive.
\end{funcdesc}


\begin{seealso}
  \seemodule{glob}{\UNIX{} shell-style path expansion.}
\end{seealso}
