temp.html
来自「perl教程」· HTML 代码 · 共 971 行 · 第 1/4 页
HTML
971 行
<?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::Temp - return name and handle of a temporary file safely</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::Temp - return name and handle of a temporary file safely</a></h1>
<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->
<ul>
<li><a href="#name">NAME</a></li>
<li><a href="#portability">PORTABILITY</a></li>
<li><a href="#synopsis">SYNOPSIS</a></li>
<li><a href="#description">DESCRIPTION</a></li>
<li><a href="#objectoriented_interface">OBJECT-ORIENTED INTERFACE</a></li>
<li><a href="#functions">FUNCTIONS</a></li>
<li><a href="#mktemp_functions">MKTEMP FUNCTIONS</a></li>
<li><a href="#posix_functions">POSIX FUNCTIONS</a></li>
<li><a href="#additional_functions">ADDITIONAL FUNCTIONS</a></li>
<li><a href="#utility_functions">UTILITY FUNCTIONS</a></li>
<li><a href="#package_variables">PACKAGE VARIABLES</a></li>
<li><a href="#warning">WARNING</a></li>
<ul>
<li><a href="#temporary_files_and_nfs">Temporary files and NFS</a></li>
<li><a href="#forking">Forking</a></li>
<li><a href="#binmode">BINMODE</a></li>
</ul>
<li><a href="#history">HISTORY</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::Temp - return name and handle of a temporary file safely</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
<span class="keyword">use</span> <span class="variable">File::Temp</span> <span class="string">qw/ tempfile tempdir /</span><span class="operator">;</span>
</pre>
<pre>
<span class="variable">$fh</span> <span class="operator">=</span> <span class="variable">tempfile</span><span class="operator">();</span>
<span class="operator">(</span><span class="variable">$fh</span><span class="operator">,</span> <span class="variable">$filename</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">tempfile</span><span class="operator">();</span>
</pre>
<pre>
<span class="operator">(</span><span class="variable">$fh</span><span class="operator">,</span> <span class="variable">$filename</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">tempfile</span><span class="operator">(</span> <span class="variable">$template</span><span class="operator">,</span> <span class="string">DIR</span> <span class="operator">=></span> <span class="variable">$dir</span><span class="operator">);</span>
<span class="operator">(</span><span class="variable">$fh</span><span class="operator">,</span> <span class="variable">$filename</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">tempfile</span><span class="operator">(</span> <span class="variable">$template</span><span class="operator">,</span> <span class="string">SUFFIX</span> <span class="operator">=></span> <span class="string">'.dat'</span><span class="operator">);</span>
</pre>
<pre>
<span class="variable">$dir</span> <span class="operator">=</span> <span class="variable">tempdir</span><span class="operator">(</span> <span class="string">CLEANUP</span> <span class="operator">=></span> <span class="number">1</span> <span class="operator">);</span>
<span class="operator">(</span><span class="variable">$fh</span><span class="operator">,</span> <span class="variable">$filename</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">tempfile</span><span class="operator">(</span> <span class="string">DIR</span> <span class="operator">=></span> <span class="variable">$dir</span> <span class="operator">);</span>
</pre>
<p>Object interface:</p>
<pre>
<span class="keyword">require</span> <span class="variable">File::Temp</span><span class="operator">;</span>
<span class="keyword">use</span> <span class="variable">File::Temp</span> <span class="operator">();</span>
</pre>
<pre>
<span class="variable">$fh</span> <span class="operator">=</span> <span class="variable">new</span> <span class="variable">File::Temp</span><span class="operator">(</span><span class="variable">$template</span><span class="operator">);</span>
<span class="variable">$fname</span> <span class="operator">=</span> <span class="variable">$fh</span><span class="operator">-></span><span class="variable">filename</span><span class="operator">;</span>
</pre>
<pre>
<span class="variable">$tmp</span> <span class="operator">=</span> <span class="variable">new</span> <span class="variable">File::Temp</span><span class="operator">(</span> <span class="string">UNLINK</span> <span class="operator">=></span> <span class="number">0</span><span class="operator">,</span> <span class="string">SUFFIX</span> <span class="operator">=></span> <span class="string">'.dat'</span> <span class="operator">);</span>
<span class="keyword">print</span> <span class="variable">$tmp</span> <span class="string">"Some data\n"</span><span class="operator">;</span>
<span class="keyword">print</span> <span class="string">"Filename is $tmp\n"</span><span class="operator">;</span>
</pre>
<p>The following interfaces are provided for compatibility with
existing APIs. They should not be used in new code.</p>
<p>MkTemp family:</p>
<pre>
<span class="keyword">use</span> <span class="variable">File::Temp</span> <span class="string">qw/ :mktemp /</span><span class="operator">;</span>
</pre>
<pre>
<span class="operator">(</span><span class="variable">$fh</span><span class="operator">,</span> <span class="variable">$file</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">mkstemp</span><span class="operator">(</span> <span class="string">"tmpfileXXXXX"</span> <span class="operator">);</span>
<span class="operator">(</span><span class="variable">$fh</span><span class="operator">,</span> <span class="variable">$file</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">mkstemps</span><span class="operator">(</span> <span class="string">"tmpfileXXXXXX"</span><span class="operator">,</span> <span class="variable">$suffix</span><span class="operator">);</span>
</pre>
<pre>
<span class="variable">$tmpdir</span> <span class="operator">=</span> <span class="variable">mkdtemp</span><span class="operator">(</span> <span class="variable">$template</span> <span class="operator">);</span>
</pre>
<pre>
<span class="variable">$unopened_file</span> <span class="operator">=</span> <span class="variable">mktemp</span><span class="operator">(</span> <span class="variable">$template</span> <span class="operator">);</span>
</pre>
<p>POSIX functions:</p>
<pre>
<span class="keyword">use</span> <span class="variable">File::Temp</span> <span class="string">qw/ :POSIX /</span><span class="operator">;</span>
</pre>
<pre>
<span class="variable">$file</span> <span class="operator">=</span> <span class="variable">tmpnam</span><span class="operator">();</span>
<span class="variable">$fh</span> <span class="operator">=</span> <span class="variable">tmpfile</span><span class="operator">();</span>
</pre>
<pre>
<span class="operator">(</span><span class="variable">$fh</span><span class="operator">,</span> <span class="variable">$file</span><span class="operator">)</span> <span class="operator">=</span> <span class="variable">tmpnam</span><span class="operator">();</span>
</pre>
<p>Compatibility functions:</p>
<pre>
<span class="variable">$unopened_file</span> <span class="operator">=</span> <span class="variable">File::Temp::tempnam</span><span class="operator">(</span> <span class="variable">$dir</span><span class="operator">,</span> <span class="variable">$pfx</span> <span class="operator">);</span>
</pre>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p><code>File::Temp</code> can be used to create and open temporary files in a safe
way. There is both a function interface and an object-oriented
interface. The File::Temp constructor or the <a href="#item_tempfile"><code>tempfile()</code></a> function can
be used to return the name and the open filehandle of a temporary
file. The <a href="#item_tempdir"><code>tempdir()</code></a> function can be used to create a temporary
directory.</p>
<p>The security aspect of temporary file creation is emphasized such that
a filehandle and filename are returned together. This helps guarantee
that a race condition can not occur where the temporary file is
created by another process between checking for the existence of the
file and its opening. Additional security levels are provided to
check, for example, that the sticky bit is set on world writable
directories. See <a href="#item_safe_level">safe_level</a> for more information.</p>
<p>For compatibility with popular C library functions, Perl implementations of
the <a href="#item_mkstemp"><code>mkstemp()</code></a> family of functions are provided. These are, mkstemp(),
mkstemps(), <a href="#item_mkdtemp"><code>mkdtemp()</code></a> and mktemp().</p>
<p>Additionally, implementations of the standard <a href="../../lib/POSIX.html">POSIX</a>
<a href="#item_tmpnam"><code>tmpnam()</code></a> and <a href="#item_tmpfile"><code>tmpfile()</code></a> functions are provided if required.</p>
<p>Implementations of mktemp(), tmpnam(), and <a href="#item_tempnam"><code>tempnam()</code></a> are provided,
but should be used with caution since they return only a filename
that was valid when function was called, so cannot guarantee
that the file will not exist by the time the caller opens the filename.</p>
<p>
</p>
<hr />
<h1><a name="objectoriented_interface">OBJECT-ORIENTED INTERFACE</a></h1>
<p>This is the primary interface for interacting with
<code>File::Temp</code>. Using the OO interface a temporary file can be created
when the object is constructed and the file can be removed when the
object is no longer required.</p>
<p>Note that there is no method to obtain the filehandle from the
<code>File::Temp</code> object. The object itself acts as a filehandle. Also,
the object is configured such that it stringifies to the name of the
temporary file.</p>
<dl>
<dt><strong><a name="item_new"><strong>new</strong></a></strong>
<dd>
<p>Create a temporary file object.</p>
</dd>
<dd>
<pre>
<span class="keyword">my</span> <span class="variable">$tmp</span> <span class="operator">=</span> <span class="variable">new</span> <span class="variable">File::Temp</span><span class="operator">();</span>
</pre>
</dd>
<dd>
<p>by default the object is constructed as if <a href="#item_tempfile"><code>tempfile</code></a>
was called without options, but with the additional behaviour
that the temporary file is removed by the object destructor
if UNLINK is set to true (the default).</p>
</dd>
<dd>
<p>Supported arguments are the same as for <a href="#item_tempfile"><code>tempfile</code></a>: UNLINK
(defaulting to true), DIR and SUFFIX. Additionally, the filename
template is specified using the TEMPLATE option. The OPEN option
is not supported (the file is always opened).</p>
</dd>
<dd>
<pre>
<span class="variable">$tmp</span> <span class="operator">=</span> <span class="variable">new</span> <span class="variable">File::Temp</span><span class="operator">(</span> <span class="string">TEMPLATE</span> <span class="operator">=></span> <span class="string">'tempXXXXX'</span><span class="operator">,</span>
<span class="string">DIR</span> <span class="operator">=></span> <span class="string">'mydir'</span><span class="operator">,</span>
<span class="string">SUFFIX</span> <span class="operator">=></span> <span class="string">'.dat'</span><span class="operator">);</span>
</pre>
</dd>
<dd>
<p>Arguments are case insensitive.</p>
</dd>
</li>
<dt><strong><a name="item_filename"><strong>filename</strong></a></strong>
<dd>
<p>Return the name of the temporary file associated with this object.</p>
</dd>
<dd>
<pre>
<span class="variable">$filename</span> <span class="operator">=</span> <span class="variable">$tmp</span><span class="operator">-></span><span class="variable">filename</span><span class="operator">;</span>
</pre>
</dd>
<dd>
<p>This method is called automatically when the object is used as
a string.</p>
</dd>
</li>
<dt><strong><a name="item_unlink_on_destroy"><strong>unlink_on_destroy</strong></a></strong>
<dd>
<p>Control whether the file is unlinked when the object goes out of scope.
The file is removed if this value is true and $KEEP_ALL is not.</p>
</dd>
<dd>
<pre>
<span class="variable">$fh</span><span class="operator">-></span><span class="variable">unlink_on_destroy</span><span class="operator">(</span> <span class="number">1</span> <span class="operator">);</span>
</pre>
</dd>
<dd>
<p>Default is for the file to be removed.</p>
</dd>
</li>
<dt><strong><a name="item_destroy"><strong>DESTROY</strong></a></strong>
<dd>
<p>When the object goes out of scope, the destructor is called. This
destructor will attempt to unlink the file (using <a href="#item_unlink1"><code>unlink1</code></a>)
if the constructor was called with UNLINK set to 1 (the default state
if UNLINK is not specified).</p>
</dd>
<dd>
<p>No error is given if the unlink fails.</p>
</dd>
<dd>
<p>If the global variable $KEEP_ALL is true, the file will not be removed.</p>
</dd>
</li>
</dl>
<p>
</p>
<hr />
<h1><a name="functions">FUNCTIONS</a></h1>
<p>This section describes the recommended interface for generating
temporary files and directories.</p>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?