📄 subroutines.mht
字号:
$@"</FONT> <FONT color=3D#ffa500>if</FONT> $@<FONT =
color=3D#00ffff>;</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#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT>$@ =
&& $@ !~ /Full moon!/<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>die</FONT><FONT color=3D#00ffff>;</FONT> =
<FONT color=3D#bebebe># re-raise unknown errors
</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#ff7f50>defined</FONT> <FONT =
color=3D#98fb98>wantarray</FONT><FONT color=3D#00ffff>())</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>return</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"pay =
attention to my error!"</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=3DAEN575>Saving Global 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>$age =3D <FONT color=3D#cdcd00>18</FONT><FONT =
color=3D#00ffff>;</FONT> <FONT color=3D#bebebe># global =
variable
</FONT><FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT>CONDITION<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>local</FONT> <FONT color=3D#9ac0cd>$age</FONT> =
=3D <FONT color=3D#cdcd00>23</FONT><FONT color=3D#00ffff>;</FONT>
func<FONT color=3D#00ffff>();</FONT> <FONT color=3D#bebebe># =
sees temporary value of 23
</FONT><FONT color=3D#00ffff>}</FONT> <FONT color=3D#bebebe># restore =
old value at block exit
#-----------------------------
</FONT>$para =3D get_paragraph<FONT color=3D#00ffff>(</FONT>*FH<FONT =
color=3D#00ffff>);</FONT> <FONT color=3D#bebebe># pass filehandle =
glob</FONT><FONT color=3D#43cd80> </FONT><FONT color=3D#bebebe>
</FONT>$para =3D get_paragraph<FONT color=3D#00ffff>(</FONT>\*FH<FONT =
color=3D#00ffff>);</FONT> <FONT color=3D#bebebe># pass filehandle =
by glob reference
</FONT>$para =3D get_paragraph<FONT color=3D#00ffff>(</FONT>*IO<FONT =
color=3D#00ffff>{</FONT>FH<FONT color=3D#00ffff>});</FONT> <FONT =
color=3D#bebebe># pass filehandle by IO reference
</FONT><FONT color=3D#ffa500>sub</FONT> <FONT =
color=3D#b2dfee>get_paragraph</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$fh</FONT> =3D =
<FONT color=3D#ff7f50>shift</FONT><FONT color=3D#00ffff>;</FONT><FONT =
color=3D#43cd80> </FONT>
<FONT color=3D#ffa500>local</FONT> $/ =3D <FONT =
color=3D#00cd00>''</FONT><FONT color=3D#00ffff>;</FONT><FONT =
color=3D#43cd80> </FONT>
<FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#9ac0cd>$paragraph</FONT> =3D <$fh><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>chomp</FONT><FONT =
color=3D#00ffff>(</FONT>$paragraph<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#ffa500>return</FONT> $paragraph<FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>$contents =3D get_motd<FONT color=3D#00ffff>();</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>get_motd</FONT> =
<FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>local</FONT> <FONT =
color=3D#9ac0cd>*MOTD</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#98fb98>open</FONT><FONT color=3D#00ffff>(</FONT>MOTD, =
<FONT color=3D#00cd00>"/etc/motd"</FONT><FONT color=3D#00ffff>)</FONT> =
<FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"can't open motd: $!"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>local</FONT> $/ =3D <FONT =
color=3D#ff7f50>undef</FONT><FONT color=3D#00ffff>;</FONT> <FONT =
color=3D#bebebe># slurp full file;
</FONT> <FONT color=3D#ffa500>local</FONT> <FONT =
color=3D#9ac0cd>$_</FONT> =3D <MOTD><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#98fb98>close</FONT> <FONT =
color=3D#00ffff>(</FONT>MOTD<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#ffa500>return</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>return</FONT> *MOTD<FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#cdad00>@nums</FONT> =3D <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>0</FONT> .. <FONT color=3D#cdcd00>5</FONT><FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>first</FONT> =
<FONT color=3D#00ffff>{</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#ffa500>local</FONT> <FONT =
color=3D#cdad00>$nums</FONT><FONT color=3D#00ffff>[</FONT><FONT =
color=3D#cdcd00>3</FONT><FONT color=3D#00ffff>]</FONT> =3D <FONT =
color=3D#cdcd00>3.14159</FONT><FONT color=3D#00ffff>;</FONT>
second<FONT color=3D#00ffff>();</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>second</FONT> =
<FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT =
color=3D#00cd00>"</FONT><FONT color=3D#cdad00>@nums</FONT><FONT =
color=3D#00cd00>\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>
second<FONT color=3D#00ffff>();</FONT>
<FONT color=3D#cdcd00>0</FONT> <FONT color=3D#cdcd00>1</FONT> <FONT =
color=3D#cdcd00>2</FONT> <FONT color=3D#cdcd00>3</FONT> <FONT =
color=3D#cdcd00>4</FONT> <FONT color=3D#cdcd00>5</FONT>
first<FONT color=3D#00ffff>();</FONT>
<FONT color=3D#cdcd00>0</FONT> <FONT color=3D#cdcd00>1</FONT> <FONT =
color=3D#cdcd00>2</FONT> <FONT color=3D#cdcd00>3.14159</FONT> <FONT =
color=3D#cdcd00>4</FONT> <FONT color=3D#cdcd00>5</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>sub</FONT> <FONT =
color=3D#b2dfee>first</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>local</FONT> <FONT =
color=3D#cdcd00>$SIG</FONT><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>INT</FONT><FONT color=3D#00ffff>}</FONT> =3D <FONT =
color=3D#00cd00>'IGNORE'</FONT><FONT color=3D#00ffff>;</FONT>
second<FONT color=3D#00ffff>();</FONT>
<FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>sub</FONT> <FONT =
color=3D#b2dfee>func</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>local</FONT><FONT =
color=3D#00ffff>(</FONT><FONT color=3D#9ac0cd>$x</FONT>, <FONT =
color=3D#9ac0cd>$y</FONT><FONT color=3D#00ffff>)</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#43cd80> </FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>sub</FONT> <FONT =
color=3D#b2dfee>func</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>my</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#9ac0cd>$x</FONT>, <FONT color=3D#9ac0cd>$y</FONT><FONT =
color=3D#00ffff>)</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#43cd80> </FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>&func<FONT color=3D#00ffff>(</FONT>*Global_Array<FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>func</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>local</FONT><FONT =
color=3D#00ffff>(</FONT><FONT color=3D#9ac0cd>*aliased_array</FONT><FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#ff7f50>shift</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>for</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdad00>@aliased_array</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>func<FONT color=3D#00ffff>(</FONT>\<FONT =
color=3D#cdad00>@Global_Array</FONT><FONT color=3D#00ffff>);</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>func</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>for</FONT> <FONT =
color=3D#00ffff>(</FONT>@$array_<FONT color=3D#98fb98>ref</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=3DAEN578>Redefining a Function</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#ff7f50>undef</FONT> &grow<FONT =
color=3D#00ffff>;</FONT> <FONT color=3D#bebebe># silence =
-w complaints of redefinition
</FONT>*grow =3D \&expand<FONT color=3D#00ffff>;</FONT><FONT =
color=3D#43cd80> </FONT>
grow<FONT color=3D#00ffff>();</FONT> <FONT =
color=3D#bebebe># calls expand()
</FONT>
<FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>local</FONT> <FONT =
color=3D#9ac0cd>*grow</FONT> =3D \&shrink<FONT =
color=3D#00ffff>;</FONT> <FONT color=3D#bebebe># only until this =
block exists
</FONT> grow<FONT color=3D#00ffff>();</FONT> =
<FONT color=3D#bebebe># calls shrink()
</FONT><FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>*one::var =3D \<FONT color=3D#cdcd00>%two::Table</FONT><FONT =
color=3D#00ffff>;</FONT> <FONT color=3D#bebebe># make </FONT><FONT =
color=3D#cdcd00>%one::var</FONT><FONT color=3D#bebebe> alias for =
</FONT><FONT color=3D#cdcd00>%two::Table</FONT><FONT color=3D#bebebe>
</FONT>*one::big =3D \&two::small<FONT color=3D#00ffff>;</FONT> =
<FONT color=3D#bebebe># make &one::big alias for &two::small
#-----------------------------
</FONT><FONT color=3D#ffa500>local</FONT> <FONT =
color=3D#9ac0cd>*fred</FONT> =3D \&barney<FONT =
color=3D#00ffff>;</FONT> <FONT color=3D#bebebe># temporarily alias =
&fred to &barney
#-----------------------------
</FONT>$string =3D red<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"careful here"</FONT><FONT color=3D#00ffff>);</FONT>
<FONT color=3D#ff7f50>print</FONT> $string<FONT color=3D#00ffff>;</FONT>
<FONT COLOR=3D<FONT color=3D#00cd00>'red'</FONT>>careful =
here</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>red</FONT> =
<FONT color=3D#00ffff>{</FONT> <FONT color=3D#00cd00>"<FONT =
COLOR=3D'red'></FONT><FONT color=3D#cdad00>@_</FONT><FONT =
color=3D#00cd00></FONT>"</FONT> <FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>sub</FONT> <FONT =
color=3D#b2dfee>color_font</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$color</FONT> =
=3D <FONT color=3D#ff7f50>shift</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>return</FONT> <FONT color=3D#00cd00>"<FONT =
COLOR=3D'$color'></FONT><FONT color=3D#cdad00>@_</FONT><FONT =
color=3D#00cd00></FONT>"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>red</FONT> =
<FONT color=3D#00ffff>{</FONT> color_font<FONT =
color=3D#00ffff>(</FONT><FONT color=3D#00cd00>"red"</FONT>, <FONT =
color=3D#cdad00>@_</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>}</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>green</FONT> =
<FONT color=3D#00ffff>{</FONT> color_font<FONT =
color=3D#00ffff>(</FONT><FONT color=3D#00cd00>"green"</FONT>, <FONT =
color=3D#cdad00>@_</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>}</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>blue</FONT> =
<FONT color=3D#00ffff>{</FONT> color_font<FONT =
color=3D#00ffff>(</FONT><FONT color=3D#00cd00>"blue"</FONT>, <FONT =
color=3D#cdad00>@_</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -