📄 subroutines.mht
字号:
color=3D#00cd00>INCREMENT</FONT><FONT color=3D#00ffff>}</FONT> =3D~ =
/<FONT color=3D#ff7f50>m</FONT>$/ <FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT> ..... <FONT color=3D#00ffff>}</FONT>
<FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN560>Skipping Selected Return =
Values</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#00ffff>(</FONT>$a, <FONT =
color=3D#ff7f50>undef</FONT>, $c<FONT color=3D#00ffff>)</FONT> =3D =
func<FONT color=3D#00ffff>();</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#00ffff>(</FONT>$a, $c<FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#00ffff>(</FONT>func<FONT =
color=3D#00ffff>())[</FONT><FONT color=3D#cdcd00>0</FONT>,<FONT =
color=3D#cdcd00>2</FONT><FONT color=3D#00ffff>];</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#00ffff>(</FONT>$dev,$ino,$DUMMY,$DUMMY,$uid<FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#98fb98>stat</FONT><FONT =
color=3D#00ffff>(</FONT>$filename<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#00ffff>(</FONT>$dev,$ino,<FONT =
color=3D#ff7f50>undef</FONT>,<FONT =
color=3D#ff7f50>undef</FONT>,$uid<FONT color=3D#00ffff>)</FONT> =3D =
<FONT color=3D#98fb98>stat</FONT><FONT =
color=3D#00ffff>(</FONT>$filename<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#00ffff>(</FONT>$dev,$ino,$uid,$gid<FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#98fb98>stat</FONT><FONT color=3D#00ffff>(</FONT>$filename<FONT =
color=3D#00ffff>))[</FONT><FONT color=3D#cdcd00>0</FONT>,<FONT =
color=3D#cdcd00>1</FONT>,<FONT color=3D#cdcd00>4</FONT>,<FONT =
color=3D#cdcd00>5</FONT><FONT color=3D#00ffff>];</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#00ffff>()</FONT> =3D some_function<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=3DAEN563>Returning More Than One Array or =
Hash</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#00ffff>(</FONT>$array_<FONT =
color=3D#98fb98>ref</FONT>, $hash_<FONT color=3D#98fb98>ref</FONT><FONT =
color=3D#00ffff>)</FONT> =3D somefunc<FONT color=3D#00ffff>();</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>somefunc</FONT> =
<FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#cdad00>@array</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#cdcd00>%hash</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe># ...
</FONT>
<FONT color=3D#ffa500>return</FONT> <FONT color=3D#00ffff>(</FONT> =
\<FONT color=3D#cdad00>@array</FONT>, \<FONT =
color=3D#cdcd00>%hash</FONT> <FONT color=3D#00ffff>);</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>fn</FONT> =
<FONT color=3D#00ffff>{</FONT><FONT color=3D#43cd80> </FONT>
.....
<FONT color=3D#ffa500>return</FONT> <FONT =
color=3D#00ffff>(</FONT>\<FONT color=3D#cdcd00>%a</FONT>, \<FONT =
color=3D#cdcd00>%b</FONT>, \<FONT color=3D#cdcd00>%c</FONT><FONT =
color=3D#00ffff>);</FONT> <FONT color=3D#bebebe># or</FONT><FONT =
color=3D#43cd80> </FONT><FONT color=3D#bebebe>
</FONT> <FONT color=3D#ffa500>return</FONT> \<FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdcd00>%a</FONT>, <FONT =
color=3D#cdcd00>%b</FONT>, <FONT color=3D#cdcd00>%c</FONT><FONT =
color=3D#00ffff>);</FONT> <FONT color=3D#bebebe># same thing
</FONT><FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#00ffff>(</FONT><FONT color=3D#cdcd00>%h0</FONT>, =
<FONT color=3D#cdcd00>%h1</FONT>, <FONT color=3D#cdcd00>%h2</FONT><FONT =
color=3D#00ffff>)</FONT> =3D fn<FONT color=3D#00ffff>();</FONT> =
<FONT color=3D#bebebe># WRONG!
</FONT><FONT color=3D#cdad00>@array_of_hashes</FONT> =3D fn<FONT =
color=3D#00ffff>();</FONT> <FONT color=3D#bebebe># eg: </FONT><FONT =
color=3D#cdad00>$array_of_hashes</FONT><FONT =
color=3D#bebebe>[2]->{"keystring"}
</FONT><FONT color=3D#00ffff>(</FONT>$r0, $r1, $r2<FONT =
color=3D#00ffff>)</FONT> =3D fn<FONT color=3D#00ffff>();</FONT> =
<FONT color=3D#bebebe># eg: $r2->{"keystring"}
</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN566>Returning Failure</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#ffa500>return</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>sub</FONT> <FONT =
color=3D#b2dfee>empty_retval</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>return</FONT> <FONT color=3D#00ffff>(</FONT> =
<FONT color=3D#98fb98>wantarray</FONT> ? <FONT color=3D#00ffff>()</FONT> =
: <FONT color=3D#ff7f50>undef</FONT> <FONT color=3D#00ffff>);</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdad00>@a</FONT> =3D =
yourfunc<FONT color=3D#00ffff>())</FONT> <FONT color=3D#00ffff>{</FONT> =
... <FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#00ffff>(</FONT>$a =3D sfunc<FONT color=3D#00ffff>())</FONT> =
<FONT color=3D#00ffff>{</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"sfunc failed"</FONT> <FONT color=3D#00ffff>}</FONT>
<FONT color=3D#ffa500>unless</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdad00>@a</FONT> =3D afunc<FONT color=3D#00ffff>())</FONT> =
<FONT color=3D#00ffff>{</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"afunc failed"</FONT> <FONT color=3D#00ffff>}</FONT>
<FONT color=3D#ffa500>unless</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>%a</FONT> =3D hfunc<FONT color=3D#00ffff>())</FONT> =
<FONT color=3D#00ffff>{</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"hfunc failed"</FONT> <FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#98fb98>ioctl</FONT><FONT =
color=3D#00ffff>(</FONT>....<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"can't ioctl: $!"</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=3DAEN569>Prototyping Functions</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>@results</FONT> =3D myfunc <FONT =
color=3D#cdcd00>3</FONT>, <FONT color=3D#cdcd00>5</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#cdad00>@results</FONT> =3D myfunc<FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdcd00>3</FONT>, <FONT =
color=3D#cdcd00>5</FONT><FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>sub</FONT> myfunc<FONT =
color=3D#00ffff>(</FONT>$<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#cdad00>@results</FONT> =3D myfunc <FONT =
color=3D#cdcd00>3</FONT>, <FONT color=3D#cdcd00>5</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#cdad00>@results</FONT> =3D <FONT =
color=3D#00ffff>(</FONT> myfunc<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>3</FONT><FONT color=3D#00ffff>)</FONT>, <FONT =
color=3D#cdcd00>5</FONT> <FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>sub</FONT> <FONT =
color=3D#b2dfee>LOCK_SH</FONT> <FONT color=3D#00ffff>()</FONT> <FONT =
color=3D#00ffff>{</FONT> <FONT color=3D#cdcd00>1</FONT> <FONT =
color=3D#00ffff>}</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>LOCK_EX</FONT> =
<FONT color=3D#00ffff>()</FONT> <FONT color=3D#00ffff>{</FONT> <FONT =
color=3D#cdcd00>2</FONT> <FONT color=3D#00ffff>}</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>LOCK_UN</FONT> =
<FONT color=3D#00ffff>()</FONT> <FONT color=3D#00ffff>{</FONT> <FONT =
color=3D#cdcd00>4</FONT> <FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>sub</FONT> <FONT =
color=3D#b2dfee>mypush</FONT> <FONT color=3D#00ffff>(</FONT>\@@<FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>my</FONT> $array_<FONT =
color=3D#98fb98>ref</FONT> =3D <FONT color=3D#ff7f50>shift</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#cdad00>@remainder</FONT> =3D <FONT =
color=3D#cdad00>@_</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe># ...
</FONT><FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT> mypush<FONT color=3D#00ffff>(</FONT> $x > <FONT =
color=3D#cdcd00>10</FONT> ? <FONT color=3D#cdad00>@a</FONT> : <FONT =
color=3D#cdad00>@b</FONT> , <FONT color=3D#cdcd00>3</FONT>, <FONT =
color=3D#cdcd00>5</FONT> <FONT color=3D#00ffff>);</FONT> <FONT =
color=3D#bebebe># WRONG
#-----------------------------
</FONT> mypush<FONT color=3D#00ffff>(</FONT> @<FONT =
color=3D#00ffff>{</FONT> $x > <FONT color=3D#cdcd00>10</FONT> ? =
\<FONT color=3D#cdad00>@a</FONT> : \<FONT color=3D#cdad00>@b</FONT> =
<FONT color=3D#00ffff>}</FONT>, <FONT color=3D#cdcd00>3</FONT>, <FONT =
color=3D#cdcd00>5</FONT> <FONT color=3D#00ffff>);</FONT> <FONT =
color=3D#bebebe># RIGHT
#-----------------------------
</FONT><FONT color=3D#ffa500>sub</FONT> <FONT =
color=3D#b2dfee>hpush</FONT><FONT color=3D#00ffff>(</FONT>\%@<FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$href</FONT> =
=3D <FONT color=3D#ff7f50>shift</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>while</FONT> <FONT color=3D#00ffff>(</FONT> =
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#00ffff>(</FONT>$k, =
$v<FONT color=3D#00ffff>)</FONT> =3D <FONT =
color=3D#ff7f50>splice</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdad00>@_</FONT>, <FONT color=3D#cdcd00>0</FONT>, <FONT =
color=3D#cdcd00>2</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
$href-><FONT color=3D#00ffff>{</FONT>$k<FONT =
color=3D#00ffff>}</FONT> =3D $v<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>
hpush<FONT color=3D#00ffff>(</FONT><FONT color=3D#cdcd00>%pieces</FONT>, =
<FONT color=3D#00cd00>"queen"</FONT> =3D> <FONT =
color=3D#cdcd00>9</FONT>, <FONT color=3D#00cd00>"rook"</FONT> =3D> =
<FONT color=3D#cdcd00>5</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=3DAEN572>Handling Exceptions</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#ffa500>die</FONT> <FONT color=3D#00cd00>"some =
message"</FONT><FONT color=3D#00ffff>;</FONT> <FONT =
color=3D#bebebe># raise exception
#-----------------------------
</FONT><FONT color=3D#ffa500>eval</FONT> <FONT color=3D#00ffff>{</FONT> =
func<FONT color=3D#00ffff>()</FONT> <FONT color=3D#00ffff>};</FONT>
<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT>$@<FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#98fb98>warn</FONT> <FONT color=3D#00cd00>"func raised =
an exception: $@"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>eval</FONT> <FONT color=3D#00ffff>{</FONT> =
$val =3D func<FONT color=3D#00ffff>()</FONT> <FONT =
color=3D#00ffff>};</FONT>
<FONT color=3D#98fb98>warn</FONT> <FONT color=3D#00cd00>"func blew up: =
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -