glob.html
来自「perl教程」· HTML 代码 · 共 373 行 · 第 1/2 页
HTML
373 行
<?xml version="1.0" ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<!-- saved from url=(0017)http://localhost/ -->
<script language="JavaScript" src="../../displayToc.js"></script>
<script language="JavaScript" src="../../tocParas.js"></script>
<script language="JavaScript" src="../../tocTab.js"></script>
<link rel="stylesheet" type="text/css" href="../../scineplex.css">
<title>File::Glob - Perl extension for BSD glob routine</title>
<link rel="stylesheet" href="../../Active.css" type="text/css" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rev="made" href="mailto:" />
</head>
<body>
<script>writelinks('__top__',2);</script>
<h1><a>File::Glob - Perl extension for BSD glob routine</a></h1>
<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->
<ul>
<li><a href="#name">NAME</a></li>
<li><a href="#synopsis">SYNOPSIS</a></li>
<li><a href="#description">DESCRIPTION</a></li>
<ul>
<li><a href="#meta_characters">META CHARACTERS</a></li>
<li><a href="#posix_flags">POSIX FLAGS</a></li>
</ul>
<li><a href="#diagnostics">DIAGNOSTICS</a></li>
<li><a href="#notes">NOTES</a></li>
<li><a href="#see_also">SEE ALSO</a></li>
<li><a href="#author">AUTHOR</a></li>
</ul>
<!-- INDEX END -->
<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>File::Glob - Perl extension for BSD glob routine</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
<span class="keyword">use</span> <span class="variable">File::Glob</span> <span class="string">':glob'</span><span class="operator">;</span>
</pre>
<pre>
<span class="variable">@list</span> <span class="operator">=</span> <span class="variable">bsd_glob</span><span class="operator">(</span><span class="string">'*.[ch]'</span><span class="operator">);</span>
<span class="variable">$homedir</span> <span class="operator">=</span> <span class="variable">bsd_glob</span><span class="operator">(</span><span class="string">'~gnat'</span><span class="operator">,</span> <span class="variable">GLOB_TILDE</span> <span class="operator">|</span> <span class="variable">GLOB_ERR</span><span class="operator">);</span>
</pre>
<pre>
<span class="keyword">if</span> <span class="operator">(</span><span class="variable">GLOB_ERROR</span><span class="operator">)</span> <span class="operator">{</span>
<span class="comment"># an error occurred reading $homedir</span>
<span class="operator">}</span>
</pre>
<pre>
<span class="comment">## override the core glob (CORE::glob() does this automatically</span>
<span class="comment">## by default anyway, since v5.6.0)</span>
<span class="keyword">use</span> <span class="variable">File::Glob</span> <span class="string">':globally'</span><span class="operator">;</span>
<span class="keyword">my</span> <span class="variable">@sources</span> <span class="operator">=</span> <span class="operator"><*.{</span><span class="variable">c</span><span class="operator">,</span><span class="variable">h</span><span class="operator">,</span><span class="regex">y}>;
</span>
</pre>
<pre>
<span class="comment">## override the core glob, forcing case sensitivity</span>
<span class="keyword">use</span> <span class="variable">File::Glob</span> <span class="string">qw(:globally :case)</span><span class="operator">;</span>
<span class="keyword">my</span> <span class="variable">@sources</span> <span class="operator">=</span> <span class="operator"><*.{</span><span class="variable">c</span><span class="operator">,</span><span class="variable">h</span><span class="operator">,</span><span class="regex">y}>;
</span>
</pre>
<pre>
<span class="comment">## override the core glob forcing case insensitivity</span>
<span class="keyword">use</span> <span class="variable">File::Glob</span> <span class="string">qw(:globally :nocase)</span><span class="operator">;</span>
<span class="keyword">my</span> <span class="variable">@sources</span> <span class="operator">=</span> <span class="operator"><*.{</span><span class="variable">c</span><span class="operator">,</span><span class="variable">h</span><span class="operator">,</span><span class="regex">y}>;
</span>
</pre>
<pre>
<span class="comment">## glob on all files in home directory</span>
<span class="keyword">use</span> <span class="variable">File::Glob</span> <span class="string">':globally'</span><span class="operator">;</span>
<span class="keyword">my</span> <span class="variable">@sources</span> <span class="operator">=</span> <span class="operator"><~</span><span class="variable">gnat</span><span class="operator">/*>;</span>
</pre>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p>The glob angle-bracket operator <code><></code> is a pathname generator that
implements the rules for file name pattern matching used by Unix-like shells
such as the Bourne shell or C shell.</p>
<p>File::Glob::bsd_glob() implements the FreeBSD <a href="../../lib/Pod/perlfunc.html#item_glob"><code>glob(3)</code></a> routine, which is
a superset of the POSIX <a href="../../lib/Pod/perlfunc.html#item_glob"><code>glob()</code></a> (described in IEEE Std 1003.2 "POSIX.2").
<code>bsd_glob()</code> takes a mandatory <code>pattern</code> argument, and an optional
<a href="../../lib/Pod/perlfunc.html#item_flags"><code>flags</code></a> argument, and returns a list of filenames matching the
pattern, with interpretation of the pattern modified by the <a href="../../lib/Pod/perlfunc.html#item_flags"><code>flags</code></a>
variable.</p>
<p>Since v5.6.0, Perl's CORE::glob() is implemented in terms of bsd_glob().
Note that they don't share the same prototype--CORE::glob() only accepts
a single argument. Due to historical reasons, CORE::glob() will also
split its argument on whitespace, treating it as multiple patterns,
whereas <code>bsd_glob()</code> considers them as one pattern.</p>
<p>
</p>
<h2><a name="meta_characters">META CHARACTERS</a></h2>
<pre>
<span class="operator">\</span> <span class="variable">Quote</span> <span class="variable">the</span> <span class="keyword">next</span> <span class="variable">metacharacter</span>
<span class="operator">[]</span> <span class="variable">Character</span> <span class="variable">class</span>
<span class="operator">{}</span> <span class="variable">Multiple</span> <span class="variable">pattern</span>
<span class="operator">*</span> <span class="variable">Match</span> <span class="variable">any</span> <span class="variable">string</span> <span class="variable">of</span> <span class="variable">characters</span>
<span class="operator">?</span> <span class="variable">Match</span> <span class="variable">any</span> <span class="variable">single</span> <span class="variable">character</span>
<span class="operator">~</span> <span class="variable">User</span> <span class="variable">name</span> <span class="variable">home</span> <span class="variable">directory</span>
</pre>
<p>The metanotation <code>a{b,c,d}e</code> is a shorthand for <code>abe ace ade</code>. Left to
right order is preserved, with results of matches being sorted separately
at a low level to preserve this order. As a special case <code>{</code>, <code>}</code>, and
<code>{}</code> are passed undisturbed.</p>
<p>
</p>
<h2><a name="posix_flags">POSIX FLAGS</a></h2>
<p>The POSIX defined flags for <code>bsd_glob()</code> are:</p>
<dl>
<dt><strong><a name="item_glob_err"><code>GLOB_ERR</code></a></strong>
<dd>
<p>Force <code>bsd_glob()</code> to return an error when it encounters a directory it
cannot open or read. Ordinarily <code>bsd_glob()</code> continues to find matches.</p>
</dd>
</li>
<dt><strong><a name="item_glob_limit"><code>GLOB_LIMIT</code></a></strong>
<dd>
<p>Make <code>bsd_glob()</code> return an error (GLOB_NOSPACE) when the pattern expands
to a size bigger than the system constant <code>ARG_MAX</code> (usually found in
limits.h). If your system does not define this constant, <code>bsd_glob()</code> uses
<code>sysconf(_SC_ARG_MAX)</code> or <code>_POSIX_ARG_MAX</code> where available (in that
order). You can inspect these values using the standard <code>POSIX</code>
extension.</p>
</dd>
</li>
<dt><strong><a name="item_glob_mark"><code>GLOB_MARK</code></a></strong>
<dd>
<p>Each pathname that is a directory that matches the pattern has a slash
appended.</p>
</dd>
</li>
<dt><strong><a name="item_glob_nocase"><code>GLOB_NOCASE</code></a></strong>
<dd>
<p>By default, file names are assumed to be case sensitive; this flag
makes <code>bsd_glob()</code> treat case differences as not significant.</p>
</dd>
</li>
<dt><strong><a name="item_glob_nocheck"><code>GLOB_NOCHECK</code></a></strong>
<dd>
<p>If the pattern does not match any pathname, then <code>bsd_glob()</code> returns a list
consisting of only the pattern. If <a href="#item_glob_quote"><code>GLOB_QUOTE</code></a> is set, its effect
is present in the pattern returned.</p>
</dd>
</li>
<dt><strong><a name="item_glob_nosort"><code>GLOB_NOSORT</code></a></strong>
<dd>
<p>By default, the pathnames are sorted in ascending ASCII order; this
flag prevents that sorting (speeding up bsd_glob()).</p>
</dd>
</li>
</dl>
<p>The FreeBSD extensions to the POSIX standard are the following flags:</p>
<dl>
<dt><strong><a name="item_glob_brace"><code>GLOB_BRACE</code></a></strong>
<dd>
<p>Pre-process the string to expand <code>{pat,pat,...}</code> strings like csh(1).
The pattern '{}' is left unexpanded for historical reasons (and <code>csh(1)</code>
does the same thing to ease typing of <code>find(1)</code> patterns).</p>
</dd>
</li>
<dt><strong><a name="item_glob_nomagic"><code>GLOB_NOMAGIC</code></a></strong>
<dd>
<p>Same as <a href="#item_glob_nocheck"><code>GLOB_NOCHECK</code></a> but it only returns the pattern if it does not
contain any of the special characters "*", "?" or "[". <code>NOMAGIC</code> is
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?