📄 ch02_04.htm
字号:
<html><head><title>Variables (Programming Perl)</title><!-- STYLESHEET --><link rel="stylesheet" type="text/css" href="../style/style1.css"><!-- METADATA --><!--Dublin Core Metadata--><meta name="DC.Creator" content=""><meta name="DC.Date" content=""><meta name="DC.Format" content="text/xml" scheme="MIME"><meta name="DC.Generator" content="XSLT stylesheet, xt by James Clark"><meta name="DC.Identifier" content=""><meta name="DC.Language" content="en-US"><meta name="DC.Publisher" content="O'Reilly & Associates, Inc."><meta name="DC.Source" content="" scheme="ISBN"><meta name="DC.Subject.Keyword" content=""><meta name="DC.Title" content="Variables"><meta name="DC.Type" content="Text.Monograph"></head><body><!-- START OF BODY --><!-- TOP BANNER --><img src="gifs/smbanner.gif" usemap="#banner-map" border="0" alt="Book Home"><map name="banner-map"><AREA SHAPE="RECT" COORDS="0,0,466,71" HREF="index.htm" ALT="Programming Perl"><AREA SHAPE="RECT" COORDS="467,0,514,18" HREF="jobjects/fsearch.htm" ALT="Search this book"></map><!-- TOP NAV BAR --><div class="navbar"><table width="515" border="0"><tr><td align="left" valign="top" width="172"><a href="ch02_03.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0"></a></td><td align="center" valign="top" width="171"><a href="ch02_01.htm">Chapter 2: Bits and Pieces</a></td><td align="right" valign="top" width="172"><a href="ch02_05.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0"></a></td></tr></table></div><hr width="515" align="left"><!-- SECTION BODY --><h2 class="sect1">2.4. Variables</h2><p><a name="INDEX-447"></a><a name="INDEX-448"></a><a name="INDEX-449"></a><a name="INDEX-450"></a>Not surprisingly, there are three variable types corresponding to thethree abstract data types we mentioned earlier. Each of these is prefixed bywhat we call a <em class="emphasis">funny character</em>.<a href="#FOOTNOTE-5">[5]</a> Scalar variables are always named with an initial<tt class="literal">$</tt>, even when referring to a scalar that is part of an array orhash. It works a bit like the English word "the". Thus, we have:</p><blockquote class="footnote"><a name="FOOTNOTE-5"></a><p>[5] That's another technicalterm in computer science. (And if it wasn't before, it isnow.)</p></blockquote><a name="perl2-ch-2-tab-1"></a><table border="1"><tr><th>Construct</th><th>Meaning</th></tr><tr><td><tt class="literal">$days</tt></td><td>Simple scalar value <tt class="literal">$days</tt></td></tr><tr><td><tt class="literal">$days[28]</tt></td><td>29th element of array <tt class="literal">@days</tt></td></tr><tr><td><tt class="literal">$days{'Feb'}</tt></td><td>"<tt class="literal">Feb</tt>" value from hash <tt class="literal">%days</tt></td></tr></table><p>Note that we can use the same name for <tt class="literal">$days</tt>,<tt class="literal">@days</tt>, and <tt class="literal">%days</tt> without Perlgetting confused.</p><p>There are other, fancier scalar terms, useful in specialized situationsthat we won't go into yet. They look like this:</p><a name="perl2-ch-2-tab-1a"></a><table border="1"><tr><th>Construct</th><th>Meaning</th></tr><tr><td><tt class="literal">${days}</tt></td><td>Same as <tt class="literal">$days</tt> but unambiguous before alphanumerics</td></tr><tr><td><tt class="literal">$Dog::days</tt></td><td>Different <tt class="literal">$days</tt> variable, in the <tt class="literal">Dog</tt> package</td></tr><tr><td><tt class="literal">$#days</tt></td><td>Last index of array <tt class="literal">@days</tt></td></tr><tr><td><tt class="literal">$days->[28]</tt></td><td>29th element of array pointed to by reference <tt class="literal">$days</tt></td></tr><tr><td><tt class="literal">$days[0][2]</tt></td><td>Multidimensional array</td></tr><tr><td><tt class="literal">$days{2000}{'Feb'}</tt></td><td>Multidimensional hash</td></tr><tr><td><tt class="literal">$days{2000,'Feb'}</tt></td><td>Multidimensional hash emulation</td></tr></table><p><a name="INDEX-451"></a><a name="INDEX-452"></a><a name="INDEX-453"></a><a name="INDEX-454"></a><a name="INDEX-455"></a>Entire arrays (or <em class="emphasis">slices</em> of arrays and hashes) arenamed with the funny character <tt class="literal">@</tt>, which works much likethe words "these" or "those":<a name="INDEX-456"></a></p><a name="perl2-ch-2-tab-2"></a><table border="1"><tr><th>Construct</th><th>Meaning</th></tr><tr><td><tt class="literal">@days</tt></td><td>Array containing <tt class="literal">($days[0], $days[1],... $days[n])</tt></td></tr><tr><td><tt class="literal">@days[3, 4, 5]</tt></td><td>Array slice containing <tt class="literal">($days[3], $days[4], $days[5])</tt></td></tr><tr><td><tt class="literal">@days[3..5]</tt></td><td>Array slice containing <tt class="literal">($days[3], $days[4], $days[5])</tt></td></tr><tr><td><tt class="literal">@days{'Jan','Feb'}</tt></td><td>Hash slice containing <tt class="literal">($days{'Jan'},$days{'Feb'})</tt></td></tr></table><p><a name="INDEX-457"></a>Entire hashes are named by <tt class="literal">%</tt>:</p><a name="perl2-ch-2-tab-3"></a><table border="1"><tr><th>Construct</th><th>Meaning</th></tr><tr><td><tt class="literal">%days</tt></td><td><tt class="literal">(Jan => 31, Feb => $leap ? 29 : 28, ...)</tt></td></tr></table><p><a name="INDEX-458"></a>Any of these constructs may also serve as an lvalue, specifying alocation you could assign a value to. With arrays, hashes, and slicesof arrays or hashes, the lvalue provides multiple locations to assignto, so you can assign multiple values to them all at once:<blockquote><pre class="programlisting">@days = 1 .. 7;</pre></blockquote></p><!-- BOTTOM NAV BAR --><hr width="515" align="left"><div class="navbar"><table width="515" border="0"><tr><td align="left" valign="top" width="172"><a href="ch02_03.htm"><img src="../gifs/txtpreva.gif" alt="Previous" border="0"></a></td><td align="center" valign="top" width="171"><a href="index.htm"><img src="../gifs/txthome.gif" alt="Home" border="0"></a></td><td align="right" valign="top" width="172"><a href="ch02_05.htm"><img src="../gifs/txtnexta.gif" alt="Next" border="0"></a></td></tr><tr><td align="left" valign="top" width="172">2.3. Built-in Data Types</td><td align="center" valign="top" width="171"><a href="index/index.htm"><img src="../gifs/index.gif" alt="Book Index" border="0"></a></td><td align="right" valign="top" width="172">2.5. Names</td></tr></table></div><hr width="515" align="left"><!-- LIBRARY NAV BAR --><img src="../gifs/smnavbar.gif" usemap="#library-map" border="0" alt="Library Navigation Links"><p><font size="-1"><a href="copyrght.htm">Copyright © 2001</a> O'Reilly & Associates. All rights reserved.</font></p><map name="library-map"> <area shape="rect" coords="2,-1,79,99" href="../index.htm"><area shape="rect" coords="84,1,157,108" href="../perlnut/index.htm"><area shape="rect" coords="162,2,248,125" href="../prog/index.htm"><area shape="rect" coords="253,2,326,130" href="../advprog/index.htm"><area shape="rect" coords="332,1,407,112" href="../cookbook/index.htm"><area shape="rect" coords="414,2,523,103" href="../sysadmin/index.htm"></map><!-- END OF BODY --></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -