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

📄 referencesandrecords.mht

📁 Perl 编程技巧大全。适合初学者阅读。
💻 MHT
📖 第 1 页 / 共 5 页
字号:
$early =3D timestamp<FONT color=3D#00ffff>();</FONT><FONT =
color=3D#43cd80> </FONT>
<FONT color=3D#98fb98>sleep</FONT> <FONT color=3D#cdcd00>20</FONT><FONT =
color=3D#00ffff>;</FONT><FONT color=3D#43cd80> </FONT>
$later =3D timestamp<FONT color=3D#00ffff>();</FONT><FONT =
color=3D#43cd80> </FONT>
<FONT color=3D#98fb98>sleep</FONT> <FONT color=3D#cdcd00>10</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>printf</FONT> <FONT color=3D#00cd00>"It's been =
</FONT><FONT color=3D#cdcd00>%d</FONT><FONT color=3D#00cd00> seconds =
since early.\n"</FONT>, $early-&gt;<FONT color=3D#00ffff>();</FONT>
<FONT color=3D#ff7f50>printf</FONT> <FONT color=3D#00cd00>"It's been =
</FONT><FONT color=3D#cdcd00>%d</FONT><FONT color=3D#00cd00> seconds =
since later.\n"</FONT>, $later-&gt;<FONT color=3D#00ffff>();</FONT>
<FONT color=3D#bebebe>#It's been 30 seconds since early.
#
#It's been 10 seconds since later.
#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN607>Taking References to Scalars</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
  <TBODY>
  <TR>
    <TD><PRE class=3DSCREEN><FONT color=3D#f5deb3 size=3D+1><FONT =
color=3D#bebebe>#-----------------------------
</FONT>$scalar_<FONT color=3D#98fb98>ref</FONT> =3D \$scalar<FONT =
color=3D#00ffff>;</FONT>       <FONT color=3D#bebebe># get reference to =
named scalar
#-----------------------------
</FONT><FONT color=3D#ff7f50>undef</FONT> $anon_<FONT =
color=3D#ff7f50>scalar</FONT>_<FONT color=3D#98fb98>ref</FONT><FONT =
color=3D#00ffff>;</FONT>
$$anon_<FONT color=3D#ff7f50>scalar</FONT>_<FONT =
color=3D#98fb98>ref</FONT> =3D <FONT color=3D#cdcd00>15</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>$anon_<FONT color=3D#ff7f50>scalar</FONT>_<FONT =
color=3D#98fb98>ref</FONT> =3D \<FONT color=3D#cdcd00>15</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ff7f50>print</FONT> $<FONT =
color=3D#00ffff>{</FONT> $scalar_<FONT color=3D#98fb98>ref</FONT> <FONT =
color=3D#00ffff>};</FONT>       <FONT color=3D#bebebe># dereference it
</FONT>$<FONT color=3D#00ffff>{</FONT> $scalar_<FONT =
color=3D#98fb98>ref</FONT> <FONT color=3D#00ffff>}</FONT> .=3D <FONT =
color=3D#00cd00>"string"</FONT><FONT color=3D#00ffff>;</FONT> <FONT =
color=3D#bebebe># alter referent's value
#-----------------------------
</FONT><FONT color=3D#ffa500>sub</FONT> new_anon_<FONT =
color=3D#ff7f50>scalar</FONT> <FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#9ac0cd>$temp</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ffa500>return</FONT> \$temp<FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>$sref =3D new_anon_<FONT color=3D#ff7f50>scalar</FONT><FONT =
color=3D#00ffff>();</FONT>
$$sref =3D <FONT color=3D#cdcd00>3</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"Three =3D =
$$sref\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#cdad00>@array_of_srefs</FONT> =3D <FONT =
color=3D#00ffff>(</FONT> new_anon_<FONT =
color=3D#ff7f50>scalar</FONT><FONT color=3D#00ffff>()</FONT>, =
new_anon_<FONT color=3D#ff7f50>scalar</FONT><FONT =
color=3D#00ffff>()</FONT> <FONT color=3D#00ffff>);</FONT>
$<FONT color=3D#00ffff>{</FONT> <FONT color=3D#cdad00>$array</FONT><FONT =
color=3D#00ffff>[</FONT><FONT color=3D#cdcd00>0</FONT><FONT =
color=3D#00ffff>]</FONT> <FONT color=3D#00ffff>}</FONT> =3D <FONT =
color=3D#cdcd00>6</FONT>.02e23<FONT color=3D#00ffff>;</FONT>
$<FONT color=3D#00ffff>{</FONT> <FONT color=3D#cdad00>$array</FONT><FONT =
color=3D#00ffff>[</FONT><FONT color=3D#cdcd00>1</FONT><FONT =
color=3D#00ffff>]</FONT> <FONT color=3D#00ffff>}</FONT> =3D <FONT =
color=3D#00cd00>"avocado"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"\</FONT><FONT =
color=3D#cdad00>@array</FONT><FONT color=3D#00cd00> contains: "</FONT>, =
<FONT color=3D#98fb98>join</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>", "</FONT>, <FONT color=3D#ff7f50>map</FONT> <FONT =
color=3D#00ffff>{</FONT> $$_ <FONT color=3D#00ffff>}</FONT> <FONT =
color=3D#cdad00>@array</FONT> <FONT color=3D#00ffff>)</FONT>, <FONT =
color=3D#00cd00>"\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>$var        =3D <FONT color=3D#00cd00>`uptime`</FONT><FONT =
color=3D#00ffff>;</FONT>     <FONT color=3D#bebebe># $var holds text
</FONT>$vref       =3D \$var<FONT color=3D#00ffff>;</FONT>        <FONT =
color=3D#bebebe># $vref "points to" $var
</FONT><FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT>$$vref =3D~ /load/<FONT color=3D#00ffff>)</FONT> =
<FONT color=3D#00ffff>{}</FONT>    <FONT color=3D#bebebe># look at $var, =
indirectly
</FONT><FONT color=3D#ff7f50>chomp</FONT> $$vref<FONT =
color=3D#00ffff>;</FONT>               <FONT color=3D#bebebe># alter =
$var, indirectly
#-----------------------------
# check whether $someref contains a simple scalar reference
</FONT><FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#98fb98>ref</FONT><FONT =
color=3D#00ffff>(</FONT>$someref<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#98fb98>ne</FONT> <FONT color=3D#00cd00>'SCALAR'</FONT><FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"Expected a =
scalar reference, not $someref\n"</FONT><FONT color=3D#00ffff>;</FONT>

<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN610>Creating Arrays of Scalar =
References</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
  <TBODY>
  <TR>
    <TD><PRE class=3DSCREEN><FONT color=3D#f5deb3 size=3D+1><FONT =
color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#cdad00>@array_of_scalar_refs</FONT> =3D <FONT =
color=3D#00ffff>(</FONT> \$a, \$b <FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#cdad00>@array_of_scalar_refs</FONT> =3D \<FONT =
color=3D#00ffff>(</FONT> $a, $b <FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>$<FONT color=3D#00ffff>{</FONT> <FONT =
color=3D#cdad00>$array_of_scalar_refs</FONT><FONT =
color=3D#00ffff>[</FONT><FONT color=3D#cdcd00>1</FONT><FONT =
color=3D#00ffff>]</FONT> <FONT color=3D#00ffff>}</FONT> =3D <FONT =
color=3D#cdcd00>12</FONT><FONT color=3D#00ffff>;</FONT>         <FONT =
color=3D#bebebe># $b =3D 12
#-----------------------------
</FONT><FONT color=3D#00ffff>(</FONT>$a, $b, $c, $d<FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>1</FONT> .. <FONT color=3D#cdcd00>4</FONT><FONT =
color=3D#00ffff>);</FONT>        <FONT color=3D#bebebe># initialize
</FONT><FONT color=3D#cdad00>@array</FONT> =3D  <FONT =
color=3D#00ffff>(</FONT>\$a, \$b, \$c, \$d<FONT =
color=3D#00ffff>);</FONT>     <FONT color=3D#bebebe># refs to each =
scalar
</FONT><FONT color=3D#cdad00>@array</FONT> =3D \<FONT =
color=3D#00ffff>(</FONT> $a,  $b,  $c,  $d<FONT =
color=3D#00ffff>);</FONT>     <FONT color=3D#bebebe># same thing!
</FONT><FONT color=3D#cdad00>@array</FONT> =3D <FONT =
color=3D#ff7f50>map</FONT> <FONT color=3D#00ffff>{</FONT> \my $anon =
<FONT color=3D#00ffff>}</FONT> <FONT color=3D#cdcd00>0</FONT> .. <FONT =
color=3D#cdcd00>3</FONT><FONT color=3D#00ffff>;</FONT>  <FONT =
color=3D#bebebe># allocate 4 anon scalarresf
</FONT>
$<FONT color=3D#00ffff>{</FONT> <FONT color=3D#cdad00>$array</FONT><FONT =
color=3D#00ffff>[</FONT><FONT color=3D#cdcd00>2</FONT><FONT =
color=3D#00ffff>]</FONT> <FONT color=3D#00ffff>}</FONT> +=3D <FONT =
color=3D#cdcd00>9</FONT><FONT color=3D#00ffff>;</FONT>                =
<FONT color=3D#bebebe># $c now 12
</FONT>
$<FONT color=3D#00ffff>{</FONT> <FONT color=3D#cdad00>$array</FONT><FONT =
color=3D#00ffff>[</FONT> <FONT color=3D#cdad00>$#array</FONT> <FONT =
color=3D#00ffff>]</FONT> <FONT color=3D#00ffff>}</FONT> *=3D <FONT =
color=3D#cdcd00>5</FONT><FONT color=3D#00ffff>;</FONT>        <FONT =
color=3D#bebebe># $d now 20
</FONT>$<FONT color=3D#00ffff>{</FONT> <FONT =
color=3D#cdad00>$array</FONT><FONT color=3D#00ffff>[</FONT><FONT =
color=3D#cdcd00>-1</FONT><FONT color=3D#00ffff>]</FONT> <FONT =
color=3D#00ffff>}</FONT>        *=3D <FONT color=3D#cdcd00>5</FONT><FONT =
color=3D#00ffff>;</FONT>        <FONT color=3D#bebebe># same; $d now 100
</FONT>
$tmp   =3D <FONT color=3D#cdad00>$array</FONT><FONT =
color=3D#00ffff>[</FONT><FONT color=3D#cdcd00>-1</FONT><FONT =
color=3D#00ffff>];</FONT>                <FONT color=3D#bebebe># using =
temporary
</FONT>$$tmp *=3D <FONT color=3D#cdcd00>5</FONT><FONT =
color=3D#00ffff>;</FONT>                         <FONT color=3D#bebebe># =
$d now 500
#-----------------------------
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>Math::Trig</FONT> <FONT color=3D#ff7f50>qw</FONT><FONT =
color=3D#00ffff>(</FONT>pi<FONT color=3D#00ffff>);</FONT>              =
<FONT color=3D#bebebe># load the constant pi
</FONT><FONT color=3D#ffa500>foreach</FONT> <FONT =
color=3D#9ac0cd>$sref</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdad00>@array</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>            <FONT color=3D#bebebe># prepare to =
change $a,$b,$c,$d
</FONT>    <FONT color=3D#00ffff>(</FONT>$$sref **=3D <FONT =
color=3D#cdcd00>3</FONT><FONT color=3D#00ffff>)</FONT> *=3D <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdcd00>4</FONT>/<FONT =
color=3D#cdcd00>3</FONT> * pi<FONT color=3D#00ffff>);</FONT>   <FONT =
color=3D#bebebe># replace with spherical volumes
</FONT><FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN613>Using Closures Instead of =
Objects</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
  <TBODY>
  <TR>
    <TD><PRE class=3DSCREEN><FONT color=3D#f5deb3 size=3D+1><FONT =
color=3D#bebebe>#-----------------------------
</FONT>$c1 =3D mkcounter<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>20</FONT><FONT color=3D#00ffff>);</FONT><FONT =
color=3D#43cd80> </FONT>
$c2 =3D mkcounter<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>77</FONT><FONT color=3D#00ffff>);</FONT>

<FONT color=3D#ff7f50>printf</FONT> <FONT color=3D#00cd00>"next c1: =
</FONT><FONT color=3D#cdcd00>%d</FONT><FONT color=3D#00cd00>\n"</FONT>, =
$c1-&gt;<FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>NEXT</FONT><FONT color=3D#00ffff>}</FONT>-&gt;<FONT =
color=3D#00ffff>();</FONT>  <FONT color=3D#bebebe># 21</FONT><FONT =
color=3D#43cd80> </FONT><FONT color=3D#bebebe>
</FONT><FONT color=3D#ff7f50>printf</FONT> <FONT color=3D#00cd00>"next =
c2: </FONT><FONT color=3D#cdcd00>%d</FONT><FONT =
color=3D#00cd00>\n"</FONT>, $c2-&gt;<FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>NEXT</FONT><FONT color=3D#00ffff>}</FONT>-&gt;<FONT =
color=3D#00ffff>();</FONT>  <FONT color=3D#bebebe># 78</FONT><FONT =
color=3D#43cd80> </FONT><FONT color=3D#bebebe>
</FONT><FONT color=3D#ff7f50>printf</FONT> <FONT color=3D#00cd00>"next =
c1: </FONT><FONT color=3D#cdcd00>%d</FONT><FONT =
color=3D#00cd00>\n"</FONT>, $c1-&gt;<FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>NEXT</FONT><FONT color=3D#00ffff>}</FONT>-&gt;<FONT =
color=3D#00ffff>();</FONT>  <FONT color=3D#bebebe># 22</FONT><FONT =
color=3D#43cd80> </FONT><FONT color=3D#bebebe>
</FONT><FONT color=3D#ff7f50>printf</FONT> <FONT color=3D#00cd00>"last =
c1: </FONT><FONT color=3D#cdcd00>%d</FONT><FONT =
color=3D#00cd00>\n"</FONT>, $c1-&gt;<FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>PREV</FONT><FONT color=3D#00ffff>}</FONT>-&gt;<FONT =
color=3D#00ffff>();</FONT>  <FONT color=3D#bebebe># 21</FONT><FONT =
color=3D#43cd80> </FONT><FONT color=3D#bebebe>
</FONT><FONT color=3D#ff7f50>printf</FONT> <FONT color=3D#00cd00>"old  =
c2: </FONT><FONT color=3D#cdcd00>%d</FONT><FONT =
color=3D#00cd00>\n"</FONT>, $c2-&gt;<FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>RESET</FONT><FONT color=3D#00ffff>}</FONT>-&gt;<FONT =
color=3D#00ffff>();</FONT> <FONT color=3D#bebebe># 77
#-----------------------------
</FONT><FONT color=3D#ffa500>sub</FONT> <FONT =
color=3D#b2dfee>mkcounter</FONT> <FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$count</FONT>  =
=3D <FONT color=3D#ff7f50>shift</FONT><FONT =
color=3D#00ffff>;</FONT><FONT color=3D#43cd80> </FONT>
    <FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$start</FONT>  =
=3D $count<FONT color=3D#00ffff>;</FONT><FONT color=3D#43cd80> </FONT>
    <FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$bundle</FONT> =
=3D <FONT color=3D#00ffff>{</FONT><FONT color=3D#43cd80> </FONT>
        <FONT color=3D#00cd00>"NEXT"</FONT>   =3D&gt; <FONT =
color=3D#ffa500>sub</FONT> <FONT color=3D#00ffff>{</FONT> <FONT =
color=3D#ffa500>return</FONT> ++$count  <FONT =
color=3D#00ffff>}</FONT>,<FONT color=3D#43cd80> </FONT>
        <FONT color=3D#00cd00>"PREV"</FONT>   =3D&gt; <FONT =
color=3D#ffa500>sub</FONT> <FONT color=3D#00ffff>{</FONT> <FONT =
color=3D#ffa500>return</FONT> --$count  <FONT =
color=3D#00ffff>}</FONT>,<FONT color=3D#43cd80> </FONT>
        <FONT color=3D#00cd00>"GET"</FONT>    =3D&gt; <FONT =
color=3D#ffa500>sub</FONT> <FONT color=3D#00ffff>{</FONT> <FONT =
color=3D#ffa500>return</FONT> $count    <FONT color=3D#00ffff>}</FONT>,
        <FONT color=3D#00cd00>"SET"</FONT>    =3D&gt; <FONT =
color=3D#ffa500>sub</FONT> <FONT color=3D#00ffff>{</FONT> $count =3D =

⌨️ 快捷键说明

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