📄 referencesandrecords.mht
字号:
<FONT color=3D#ff7f50>shift</FONT> <FONT =
color=3D#00ffff>}</FONT>,<FONT color=3D#43cd80> </FONT>
<FONT color=3D#00cd00>"BUMP"</FONT> =3D> <FONT =
color=3D#ffa500>sub</FONT> <FONT color=3D#00ffff>{</FONT> $count +=3D =
<FONT color=3D#ff7f50>shift</FONT> <FONT color=3D#00ffff>}</FONT>,<FONT =
color=3D#43cd80> </FONT>
<FONT color=3D#00cd00>"RESET"</FONT> =3D> <FONT =
color=3D#ffa500>sub</FONT> <FONT color=3D#00ffff>{</FONT> $count =3D =
$start <FONT color=3D#00ffff>}</FONT>,
<FONT color=3D#00ffff>};</FONT><FONT color=3D#43cd80> </FONT>
$bundle-><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>"LAST"</FONT><FONT color=3D#00ffff>}</FONT> =3D =
$bundle-><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>"PREV"</FONT><FONT color=3D#00ffff>};</FONT><FONT =
color=3D#43cd80> </FONT>
<FONT color=3D#ffa500>return</FONT> $bundle<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=3DAEN616>Creating References to =
Methods</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>$mref =3D <FONT color=3D#ffa500>sub</FONT> <FONT =
color=3D#00ffff>{</FONT> $obj->meth<FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdad00>@_</FONT><FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>};</FONT><FONT =
color=3D#43cd80> </FONT>
<FONT color=3D#bebebe># later...</FONT><FONT color=3D#43cd80> =
</FONT><FONT color=3D#bebebe>
</FONT>$mref-><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"args"</FONT>, <FONT color=3D#00cd00>"go"</FONT>, <FONT =
color=3D#00cd00>"here"</FONT><FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>$sref =3D \$obj->meth<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>$cref =3D $obj->can<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"meth"</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=3DAEN619>Constructing Records</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>$record =3D <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#00cd00>NAME</FONT> =3D> <FONT =
color=3D#00cd00>"Jason"</FONT>,
<FONT color=3D#00cd00>EMPNO</FONT> =3D> <FONT =
color=3D#cdcd00>132</FONT>,
<FONT color=3D#00cd00>TITLE</FONT> =3D> <FONT =
color=3D#00cd00>"deputy peon"</FONT>,
<FONT color=3D#00cd00>AGE</FONT> =3D> <FONT =
color=3D#cdcd00>23</FONT>,
<FONT color=3D#00cd00>SALARY</FONT> =3D> <FONT =
color=3D#cdcd00>37</FONT>_<FONT color=3D#cdcd00>000</FONT>,
<FONT color=3D#00cd00>PALS</FONT> =3D> <FONT =
color=3D#00ffff>[</FONT> <FONT color=3D#00cd00>"Norbert"</FONT>, <FONT =
color=3D#00cd00>"Rhys"</FONT>, <FONT =
color=3D#00cd00>"Phineas"</FONT><FONT color=3D#00ffff>]</FONT>,
<FONT color=3D#00ffff>};</FONT>
<FONT color=3D#ff7f50>printf</FONT> <FONT color=3D#00cd00>"I am =
</FONT><FONT color=3D#cdcd00>%s</FONT><FONT color=3D#00cd00>, and my =
pals are </FONT><FONT color=3D#cdcd00>%s</FONT><FONT =
color=3D#00cd00>.\n"</FONT>,
$record-><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>NAME</FONT><FONT color=3D#00ffff>}</FONT>,
<FONT color=3D#98fb98>join</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>", "</FONT>, @<FONT =
color=3D#00ffff>{</FONT>$record-><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>PALS</FONT><FONT color=3D#00ffff>}});</FONT>
<FONT color=3D#bebebe>#-----------------------------
# store record
</FONT><FONT color=3D#cdcd00>$byname</FONT><FONT =
color=3D#00ffff>{</FONT> $record-><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>NAME</FONT><FONT color=3D#00ffff>}</FONT> <FONT =
color=3D#00ffff>}</FONT> =3D $record<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe># later on, look up by name
</FONT><FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT>$rp =
=3D <FONT color=3D#cdcd00>$byname</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>"Aron"</FONT><FONT =
color=3D#00ffff>})</FONT> <FONT color=3D#00ffff>{</FONT> <FONT =
color=3D#bebebe># false if missing
</FONT> <FONT color=3D#ff7f50>printf</FONT> <FONT =
color=3D#00cd00>"Aron is employee </FONT><FONT =
color=3D#cdcd00>%d</FONT><FONT color=3D#00cd00>.\n"</FONT>, =
$rp-><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>EMPNO</FONT><FONT color=3D#00ffff>};</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe># give jason a new pal
</FONT><FONT color=3D#ff7f50>push</FONT> @<FONT =
color=3D#00ffff>{</FONT><FONT color=3D#cdcd00>$byname</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>"Jason"</FONT><FONT =
color=3D#00ffff>}</FONT>-><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>PALS</FONT><FONT color=3D#00ffff>}}</FONT>, <FONT =
color=3D#00cd00>"Theodore"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>printf</FONT> <FONT color=3D#00cd00>"Jason now has =
</FONT><FONT color=3D#cdcd00>%d</FONT><FONT color=3D#00cd00> =
pals\n"</FONT>, <FONT color=3D#ff7f50>scalar</FONT> @<FONT =
color=3D#00ffff>{</FONT><FONT color=3D#cdcd00>$byname</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>"Jason"</FONT><FONT =
color=3D#00ffff>}</FONT>-><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>PALS</FONT><FONT color=3D#00ffff>}};</FONT>
<FONT color=3D#bebebe>#-----------------------------
# Go through all records
</FONT><FONT color=3D#ffa500>while</FONT> <FONT =
color=3D#00ffff>((</FONT>$name, $record<FONT color=3D#00ffff>)</FONT> =
=3D <FONT color=3D#ff7f50>each</FONT> <FONT =
color=3D#cdcd00>%byname</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#ff7f50>printf</FONT> <FONT =
color=3D#00cd00>"</FONT><FONT color=3D#cdcd00>%s</FONT><FONT =
color=3D#00cd00> is employee number </FONT><FONT =
color=3D#cdcd00>%d</FONT><FONT color=3D#00cd00>\n"</FONT>, $name, =
$record-><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>EMPNO</FONT><FONT color=3D#00ffff>};</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
# store record
</FONT><FONT color=3D#cdad00>$employees</FONT><FONT =
color=3D#00ffff>[</FONT> $record-><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>EMPNO</FONT><FONT color=3D#00ffff>}</FONT> <FONT =
color=3D#00ffff>]</FONT> =3D $record<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe># lookup by id
</FONT><FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT>$rp =
=3D <FONT color=3D#cdad00>$employee</FONT><FONT =
color=3D#00ffff>[</FONT><FONT color=3D#cdcd00>132</FONT><FONT =
color=3D#00ffff>])</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ff7f50>printf</FONT> <FONT color=3D#00cd00>"employee =
number 132 is </FONT><FONT color=3D#cdcd00>%s</FONT><FONT =
color=3D#00cd00>\n"</FONT>, $rp-><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>NAME</FONT><FONT color=3D#00ffff>};</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#cdcd00>$byname</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>"Jason"</FONT><FONT =
color=3D#00ffff>}</FONT>-><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>SALARY</FONT><FONT color=3D#00ffff>}</FONT> *=3D <FONT =
color=3D#cdcd00>1.035</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#cdad00>@peons</FONT> =3D <FONT =
color=3D#ff7f50>grep</FONT> <FONT color=3D#00ffff>{</FONT> $_-><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>TITLE</FONT><FONT =
color=3D#00ffff>}</FONT> =3D~ /peon/i <FONT color=3D#00ffff>}</FONT> =
<FONT color=3D#cdad00>@employees</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#cdad00>@tsevens</FONT> =3D <FONT =
color=3D#ff7f50>grep</FONT> <FONT color=3D#00ffff>{</FONT> $_-><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>AGE</FONT><FONT =
color=3D#00ffff>}</FONT> =3D=3D <FONT color=3D#cdcd00>27</FONT> <FONT =
color=3D#00ffff>}</FONT> <FONT =
color=3D#cdad00>@employees</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
# Go through all records
</FONT><FONT color=3D#ffa500>foreach</FONT> <FONT =
color=3D#9ac0cd>$rp</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#ff7f50>sort</FONT> <FONT color=3D#00ffff>{</FONT> $a-><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>AGE</FONT><FONT =
color=3D#00ffff>}</FONT> <=3D> $b-><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>AGE</FONT><FONT =
color=3D#00ffff>}</FONT> <FONT color=3D#00ffff>}</FONT> <FONT =
color=3D#98fb98>values</FONT> <FONT color=3D#cdcd00>%byname</FONT><FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ff7f50>printf</FONT> <FONT =
color=3D#00cd00>"</FONT><FONT color=3D#cdcd00>%s</FONT><FONT =
color=3D#00cd00> is age </FONT><FONT color=3D#cdcd00>%d</FONT><FONT =
color=3D#00cd00>.\n"</FONT>, $rp-><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>NAME</FONT><FONT color=3D#00ffff>}</FONT>, $rp-><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>AGE</FONT><FONT =
color=3D#00ffff>};</FONT>
<FONT color=3D#bebebe># or with a hash slice on the reference
</FONT> <FONT color=3D#ff7f50>printf</FONT> <FONT =
color=3D#00cd00>"</FONT><FONT color=3D#cdcd00>%s</FONT><FONT =
color=3D#00cd00> is employee number </FONT><FONT =
color=3D#cdcd00>%d</FONT><FONT color=3D#00cd00>.\n"</FONT>, <FONT =
color=3D#9ac0cd>@$rp</FONT><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>'NAME'</FONT>,<FONT color=3D#00cd00>'EMPNO'</FONT><FONT =
color=3D#00ffff>};</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
# use </FONT><FONT color=3D#cdad00>@byage</FONT><FONT color=3D#bebebe>, =
an array of arrays of records
</FONT><FONT color=3D#ff7f50>push</FONT> @<FONT color=3D#00ffff>{</FONT> =
<FONT color=3D#cdad00>$byage</FONT><FONT color=3D#00ffff>[</FONT> =
$record-><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>AGE</FONT><FONT color=3D#00ffff>}</FONT> <FONT =
color=3D#00ffff>]</FONT> <FONT color=3D#00ffff>}</FONT>, $record<FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>for</FONT> <FONT =
color=3D#00ffff>(</FONT>$age =3D <FONT color=3D#cdcd00>0</FONT><FONT =
color=3D#00ffff>;</FONT> $age <=3D <FONT =
color=3D#cdad00>$#byage</FONT><FONT color=3D#00ffff>;</FONT> $age++<FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>next</FONT> <FONT =
color=3D#ffa500>unless</FONT> <FONT color=3D#cdad00>$byage</FONT><FONT =
color=3D#00ffff>[</FONT>$age<FONT color=3D#00ffff>];</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"Age $age: =
"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>foreach</FONT> <FONT =
color=3D#9ac0cd>$rp</FONT> <FONT color=3D#00ffff>(</FONT>@<FONT =
color=3D#00ffff>{</FONT><FONT color=3D#cdad00>$byage</FONT><FONT =
color=3D#00ffff>[</FONT>$age<FONT color=3D#00ffff>]})</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#ff7f50>print</FONT> $rp-><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>NAME</FONT><FONT =
color=3D#00ffff>}</FONT>, <FONT color=3D#00cd00>" "</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT =
color=3D#00cd00>"\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>for</FONT> <FONT =
color=3D#00ffff>(</FONT>$age =3D <FONT color=3D#cdcd00>0</FONT><FONT =
color=3D#00ffff>;</FONT> $age <=3D <FONT =
color=3D#cdad00>$#byage</FONT><FONT color=3D#00ffff>;</FONT> $age++<FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>next</FONT> <FONT =
color=3D#ffa500>unless</FONT> <FONT color=3D#cdad00>$byage</FONT><FONT =
color=3D#00ffff>[</FONT>$age<FONT color=3D#00ffff>];</FONT>
<FONT color=3D#ff7f50>printf</FONT> <FONT color=3D#00cd00>"Age =
</FONT><FONT color=3D#cdcd00>%d:</FONT><FONT color=3D#00cd00> =
</FONT><FONT color=3D#cdcd00>%s</FONT><FONT color=3D#00cd00>\n"</FONT>, =
$age,
<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#00cd00>NAME</FONT><FONT =
color=3D#00ffff>}}</FONT> @<FONT color=3D#00ffff>{</FONT><FONT =
color=3D#cdad00>$byage</FONT><FONT color=3D#00ffff>[</FONT>$age<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=3DAEN622>Reading and Writing Hash Records to =
Text=20
Files</A></H2>
<TABLE width=3D"100%" bgColor=3D#2f4f4f border=3D0>
<TBODY>
<TR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -