⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch04_04.htm

📁 by Randal L. Schwartz and Tom Phoenix ISBN 0-596-00132-0 Third Edition, published July 2001. (See
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html><head><title>Special Variables (Perl in a Nutshell, 2nd Edition)</title><link rel="stylesheet" type="text/css" href="../style/style1.css" /><meta name="DC.Creator" content="Stephen Spainhour" /><meta name="DC.Format" content="text/xml" scheme="MIME" /><meta name="DC.Language" content="en-US" /><meta name="DC.Publisher" content="O'Reilly &amp; Associates, Inc." /><meta name="DC.Source" scheme="ISBN" content="0596002416L" /><meta name="DC.Subject.Keyword" content="stuff" /><meta name="DC.Title" content="Perl in a Nutshell, 2nd Edition" /><meta name="DC.Type" content="Text.Monograph" /></head><body bgcolor="#ffffff"><img src="gifs/smbanner.gif" usemap="#banner-map" border="0" alt="Book Home" /><map name="banner-map"><area shape="rect" coords="1,-2,616,66" href="index.htm" alt="Java and XSLT" /><area shape="rect" coords="629,-11,726,25" href="jobjects/fsearch.htm" alt="Search this book" /></map><div class="navbar"><table width="684" border="0"><tr><td align="left" valign="top" width="228"><a href="ch04_03.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0" /></a></td><td align="center" valign="top" width="228" /><td align="right" valign="top" width="228"><a href="ch04_05.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0" /></a></td></tr></table></div><h2 class="sect1">4.4. Special Variables</h2><p><a name="INDEX-299" /><a name="INDEX-300" /><a name="INDEX-301" />Some variables have a predefined,special meaning in Perl. They use punctuation characters after theusual variable indicator (<tt class="literal">$</tt>, <tt class="literal">@</tt>,or <tt class="literal">%</tt>), such as <tt class="literal">$_</tt>. Theexplicit, long-form names are the variables'equivalents when you use the English module by including <tt class="literal">useEnglish;</tt> at the top of your program.</p><a name="perlnut2-CHP-4-SECT-4.1" /><div class="sect2"><h3 class="sect2">4.4.1. Global Special Variables</h3><p><a name="INDEX-302" /><a name="INDEX-303" /><a name="INDEX-304" /><a name="INDEX-305" />The most common special variable is<tt class="literal">$_</tt>, which contains the default input andpattern-searching string. For example:</p><blockquote><pre class="code">foreach ('hickory','dickory','doc') {        print;}</pre></blockquote><p>The first time the loop is executed,"hickory" is printed. The secondtime around, "dickory" is printed,and the third time, "doc" isprinted. That's because in each iteration of theloop, the current string is placed in <tt class="literal">$_</tt> and isused by default by <tt class="literal">print</tt>. Here are the placeswhere Perl will assume <tt class="literal">$_</tt>, even if youdon't specify it:</p><ul><li><p>Various unary functions, including functions such as<tt class="literal">ord</tt> and <tt class="literal">int</tt>, as well as the allfile tests (<tt class="literal">-f</tt>, <tt class="literal">-d</tt>), except for<tt class="literal">-t</tt>, which defaults to <tt class="literal">STDIN</tt>.</p></li><li><p>Various list functions such as <tt class="literal">print</tt> and<tt class="literal">unlink</tt>.</p></li><li><p>The pattern-matching operations <tt class="literal">m//</tt>,<tt class="literal">s///</tt>, and <tt class="literal">tr///</tt> when usedwithout an <tt class="literal">=~</tt> operator.</p></li><li><p>The default iterator variable in a <tt class="literal">foreach</tt> loop ifno other variable is supplied.</p></li><li><p>The implicit iterator variable in the <tt class="literal">grep</tt> and<tt class="literal">map</tt> functions.</p></li><li><p>The default place to put an input record when a line-inputoperation's result is tested by itself as the solecriterion of a <tt class="literal">while</tt> test (i.e.,<tt class="literal">&lt;</tt><em class="replaceable"><tt>filehandle</tt></em><tt class="literal">&gt;</tt>).Note that outside of a <tt class="literal">while</tt> test, this does nothappen.</p></li></ul><p>The following is a complete listing of global special variables:</p><dl><dt><b><tt class="literal">$_</tt></b></dt><dt><b><tt class="literal">$ARG</tt></b></dt><dd>The default input and pattern-searching space.</p></dd><dt><b><tt class="literal">$</tt>.</b></dt><dt><b><tt class="literal">$INPUT_LINE_NUMBER</tt></b></dt><dt><b><tt class="literal">$NR</tt></b></dt><dd><a name="INDEX-306" /><a name="INDEX-307" /><a name="INDEX-308" />The current input line number of thelast filehandle that was read. An explicit close on the filehandleresets the line number.</p></dd><dt><b><tt class="literal">$/</tt></b></dt><dt><b><tt class="literal">$INPUT_RECORD_SEPARATOR</tt></b></dt><dt><b><tt class="literal">$RS</tt></b></dt><dd><a name="INDEX-309" /><a name="INDEX-310" />The input record separator; newline bydefault. If set to the null string, it treats blank lines asdelimiters.</p></dd><dt><b><tt class="literal">$</tt>,</b></dt><dt><b><tt class="literal">$OUTPUT_FIELD_SEPARATOR</tt></b></dt><dt><b><tt class="literal">$OFS</tt></b></dt><dd><a name="INDEX-311" /><a name="INDEX-312" /><a name="INDEX-313" />The output fieldseparator for the <tt class="literal">print</tt> operator.</p></dd><dt><b><tt class="literal">$\</tt></b></dt><dt><b><tt class="literal">$OUTPUT_RECORD_SEPARATOR</tt></b></dt><dt><b><tt class="literal">$ORS</tt></b></dt><dd><a name="INDEX-314" /><a name="INDEX-315" /><a name="INDEX-316" />The outputrecord separator for the <tt class="literal">print</tt> operator.</p></dd><dt><b><tt class="literal">$</tt></b></dt><dt><b><tt class="literal">$LIST_SEPARATOR</tt></b></dt><dd><a name="INDEX-317" /><a name="INDEX-318" />Like <tt class="literal">$</tt>, except thatit applies to list values interpolated into a double-quoted string(or similar interpreted string). Default is a space.</p></dd><dt><b><tt class="literal">$;</tt></b></dt><dt><b><tt class="literal">$SUBSCRIPT_SEPARATOR</tt></b></dt><dt><b><tt class="literal">$SUBSEP</tt></b></dt><dd><a name="INDEX-319" /><a name="INDEX-320" /><a name="INDEX-321" />The subscriptseparator for multidimensional array emulation. Default is<tt class="literal">\034</tt>. </p></dd><dt><b><tt class="literal">$^L</tt></b></dt><dt><b><tt class="literal">$FORMAT_FORMFEED</tt></b></dt><dd><a name="INDEX-322" /><a name="INDEX-323" />What a format outputs to perform aformfeed. Default is <tt class="literal">\f</tt>.</p></dd><dt><b><tt class="literal">$:</tt></b></dt><dt><b><tt class="literal">$FORMAT_LINE_BREAK_CHARACTERS</tt></b></dt><dd><a name="INDEX-324" /><a name="INDEX-325" />The current set of characters afterwhich a string may be broken to fill continuation fields (startingwith <tt class="literal">^</tt>) in a format. Default is<tt class="literal">\n"</tt>.</p></dd><dt><b><tt class="literal">$^A</tt></b></dt><dt><b><tt class="literal">$ACCUMULATOR</tt></b></dt><dd><a name="INDEX-326" /><a name="INDEX-327" />The current value of the<tt class="literal">write</tt> accumulator for <tt class="literal">format</tt>lines.</p></dd><dt><b><tt class="literal">$#</tt></b></dt><dt><b><tt class="literal">$OFMT</tt></b></dt><dd><a name="INDEX-328" /><a name="INDEX-329" />Contains theoutput format for printed numbers (deprecated).</p></dd><dt><b><tt class="literal">$?</tt></b></dt><dt><b><tt class="literal">$CHILD_ERROR</tt></b></dt><dd><a name="INDEX-330" /><a name="INDEX-331" />The status returned by the last pipeclose, backtick (<tt class="literal">''</tt>) command, or<tt class="literal">system</tt> operator.</p></dd><dt><b><tt class="literal">$!</tt></b></dt><dt><b><tt class="literal">$OS_ERROR</tt></b></dt><dt><b><tt class="literal">$ERRNO</tt></b></dt><dd><a name="INDEX-332" /><a name="INDEX-333" /><a name="INDEX-334" />If used in anumeric context, yields the current value of the<tt class="literal">errno</tt> variable, identifying the last system callerror. If used in a string context, yields the corresponding systemerror string.</p></dd><dt><b><tt class="literal">$@</tt></b></dt><dt><b><tt class="literal">$EVAL_ERROR</tt></b></dt><dd><a name="INDEX-335" /><a name="INDEX-336" />The Perl syntax error message from thelast <tt class="literal">eval</tt> command.</p></dd><dt><b><tt class="literal">$$</tt></b></dt><dt><b><tt class="literal">$PROCESS_ID</tt></b></dt><dt><b><tt class="literal">$PID</tt></b></dt><dd><a name="INDEX-337" /><a name="INDEX-338" /><a name="INDEX-339" />The pid of the Perlprocess running this script.</p></dd><dt><b><tt class="literal">$&lt;</tt></b></dt><dt><b><tt class="literal">$REAL_USER_ID</tt></b></dt><dt><b><tt class="literal">$UID</tt></b></dt><dd><a name="INDEX-340" /><a name="INDEX-341" /><a name="INDEX-342" />The real user ID(uid) of this process.</p></dd><dt><b><tt class="literal">$&gt;</tt></b></dt><dt><b><tt class="literal">$EFFECTIVE_USER_ID</tt></b></dt><dt><b><tt class="literal">$EUID</tt></b></dt><dd><a name="INDEX-343" /><a name="INDEX-344" /><a name="INDEX-345" />The effectiveuid of this process.</p></dd><dt><b><tt class="literal">$(</tt></b></dt><dt><b><tt class="literal">$REAL_GROUP_ID</tt></b></dt><dt><b><tt class="literal">$GID</tt></b></dt><dd><a name="INDEX-346" /><a name="INDEX-347" /><a name="INDEX-348" />The real group ID(gid) of this process.</p></dd><dt><b><tt class="literal">$)</tt></b></dt><dt><b><tt class="literal">$EFFECTIVE_GROUP_ID</tt></b></dt><dt><b><tt class="literal">$EGID</tt></b></dt><dd><a name="INDEX-349" /><a name="INDEX-350" /><a name="INDEX-351" />The effective gid ofthis process.</p></dd><dt><b><tt class="literal">$0</tt></b></dt><dt><b><tt class="literal">$PROGRAM_NAME</tt></b></dt><dd><a name="INDEX-352" /><a name="INDEX-353" />Contains the name of the filecontaining the Perl script being executed.</p></dd><dt><b><tt class="literal">$[</tt></b></dt><dd><a name="INDEX-354" />The index of the firstelement in an array and of the first character in a substring.Default is 0.</p></dd><dt><b><tt class="literal">$]</tt></b></dt><dt><b><tt class="literal">$PERL_VERSION</tt></b></dt><dd><a name="INDEX-355" /><a name="INDEX-356" />Returns the version plus patch leveldivided by 1,000.</p></dd><dt><b><tt class="literal">$^D</tt></b></dt><dt><b><tt class="literal">$DEBUGGING</tt></b></dt><dd><a name="INDEX-357" /><a name="INDEX-358" />The currentvalue of the debugging flags.</p></dd><dt><b><tt class="literal">$^E</tt></b></dt><dt><b><tt class="literal">$EXTENDED_OS_ERROR</tt></b></dt><dd><a name="INDEX-359" /><a name="INDEX-360" />Extended error message on someplatforms.</p></dd><dt><b><tt class="literal">$^F</tt></b></dt><dt><b><tt class="literal">$SYSTEM_FD_MAX</tt></b></dt><dd><a name="INDEX-361" /><a name="INDEX-362" />The maximum system file descriptor,ordinarily 2.</p></dd><dt><b><tt class="literal">$^H</tt></b></dt><dd><a name="INDEX-363" />Contains internal compiler hintsenabled by certain pragmatic modules.</p></dd><dt><b><tt class="literal">$^I</tt></b></dt><dt><b><tt class="literal">$INPLACE_EDIT</tt></b></dt><dd><a name="INDEX-364" /><a name="INDEX-365" />The current value of the inplace-editextension. Use <tt class="literal">undef</tt> to disable inplace editing.</p></dd><dt><b><tt class="literal">$^M</tt></b></dt><dd><a name="INDEX-366" />The contents of <tt class="literal">$M</tt>can be used as an emergency memory pool in case Perl<tt class="literal">die</tt> s with an out-of-memory error. Use of<tt class="literal">$M</tt> requires a special compilation of Perl. See theINSTALL document for more information.</p></dd><dt><b><tt class="literal">$^O</tt></b></dt><dt><b><tt class="literal">$OSNAME</tt></b></dt><dd><a name="INDEX-367" /><a name="INDEX-368" />Contains thename of the operating system for which the current Perl binary wascompiled.</p></dd><dt><b><tt class="literal">$^P</tt></b></dt><dt><b><tt class="literal">$PERLDB</tt></b></dt>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -