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

📄 subroutines.mht

📁 Perl 编程技巧大全。适合初学者阅读。
💻 MHT
📖 第 1 页 / 共 5 页
字号:
$@"</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>$@ =
&amp;&amp; $@ !~ /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 &lt;$fh&gt;<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 &lt;MOTD&gt;<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>&amp;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> &amp;grow<FONT =
color=3D#00ffff>;</FONT>                <FONT color=3D#bebebe># silence =
-w complaints of redefinition
</FONT>*grow =3D \&amp;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 \&amp;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 \&amp;two::small<FONT color=3D#00ffff>;</FONT>   =
<FONT color=3D#bebebe># make &amp;one::big alias for &amp;two::small
#-----------------------------
</FONT><FONT color=3D#ffa500>local</FONT> <FONT =
color=3D#9ac0cd>*fred</FONT> =3D \&amp;barney<FONT =
color=3D#00ffff>;</FONT>     <FONT color=3D#bebebe># temporarily alias =
&amp;fred to &amp;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>
&lt;FONT COLOR=3D<FONT color=3D#00cd00>'red'</FONT>&gt;careful =
here&lt;/FONT&gt;
<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>"&lt;FONT =
COLOR=3D'red'&gt;</FONT><FONT color=3D#cdad00>@_</FONT><FONT =
color=3D#00cd00>&lt;/FONT&gt;"</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>"&lt;FONT =
COLOR=3D'$color'&gt;</FONT><FONT color=3D#cdad00>@_</FONT><FONT =
color=3D#00cd00>&lt;/FONT&gt;"</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 + -