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

📄 hashes.mht

📁 Perl 编程技巧大全。适合初学者阅读。
💻 MHT
📖 第 1 页 / 共 5 页
字号:
]}\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>my</FONT> <FONT color=3D#cdad00>@temp</FONT> =
=3D <FONT color=3D#cdcd00>%hash</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ff7f50>print</FONT> <FONT =
color=3D#00cd00>"</FONT><FONT color=3D#cdad00>@temp</FONT><FONT =
color=3D#00cd00>"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>foreach</FONT> <FONT =
color=3D#9ac0cd>$k</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#ff7f50>sort</FONT> <FONT color=3D#ff7f50>keys</FONT> <FONT =
color=3D#cdcd00>%hash</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"$k =3D&gt; =
</FONT><FONT color=3D#cdcd00>$hash</FONT><FONT =
color=3D#00cd00>{$k}\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=3DAEN250>Retrieving from a Hash in Insertion=20
Order</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>use</FONT> <FONT =
color=3D#b2dfee>Tie::IxHash</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>tie</FONT> <FONT color=3D#cdcd00>%HASH</FONT>, =
<FONT color=3D#00cd00>"Tie::IxHash"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe># manipulate </FONT><FONT =
color=3D#cdcd00>%HASH</FONT><FONT color=3D#bebebe>
</FONT><FONT color=3D#cdad00>@keys</FONT> =3D <FONT =
color=3D#ff7f50>keys</FONT> <FONT color=3D#cdcd00>%HASH</FONT><FONT =
color=3D#00ffff>;</FONT>         <FONT color=3D#bebebe># </FONT><FONT =
color=3D#cdad00>@keys</FONT><FONT color=3D#bebebe> is in insertion order
#-----------------------------
# initialize
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>Tie::IxHash</FONT><FONT color=3D#00ffff>;</FONT>

<FONT color=3D#ff7f50>tie</FONT> <FONT =
color=3D#cdcd00>%food_color</FONT>, <FONT =
color=3D#00cd00>"Tie::IxHash"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#cdcd00>$food_color</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>Banana</FONT><FONT =
color=3D#00ffff>}</FONT> =3D <FONT color=3D#00cd00>"Yellow"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#cdcd00>$food_color</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>Apple</FONT><FONT =
color=3D#00ffff>}</FONT>  =3D <FONT color=3D#00cd00>"Green"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#cdcd00>$food_color</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>Lemon</FONT><FONT =
color=3D#00ffff>}</FONT>  =3D <FONT color=3D#00cd00>"Yellow"</FONT><FONT =
color=3D#00ffff>;</FONT>

<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"In insertion =
order, the foods are:\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>foreach</FONT> <FONT color=3D#9ac0cd>$food</FONT> =
<FONT color=3D#00ffff>(</FONT><FONT color=3D#ff7f50>keys</FONT> <FONT =
color=3D#cdcd00>%food_color</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"  =
$food\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>

<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"Still in =
insertion order, the foods' colors are:\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>while</FONT> <FONT color=3D#00ffff>((</FONT> =
$food, $color <FONT color=3D#00ffff>)</FONT> =3D <FONT =
color=3D#ff7f50>each</FONT> <FONT color=3D#cdcd00>%food_color</FONT> =
<FONT color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"$food is =
colored $color.\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>

<FONT color=3D#bebebe>#In insertion order, the foods are:
#
#  Banana
#
#  Apple
#
#  Lemon
#
#Still in insertion order, the foods' colors are:
#
#Banana is colored Yellow.
#
#Apple is colored Green.
#
#Lemon is colored Yellow.
#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN253>Hashes with Multiple Values Per =
Key</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#cdcd00>%ttys</FONT> =3D <FONT =
color=3D#00ffff>();</FONT>

<FONT color=3D#98fb98>open</FONT><FONT color=3D#00ffff>(</FONT>WHO, =
<FONT color=3D#00cd00>"who|"</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 who: =
$!"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>while</FONT> <FONT =
color=3D#00ffff>(</FONT>&lt;WHO&gt;<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#00ffff>(</FONT>$user, $tty<FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#ff7f50>split</FONT><FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#ff7f50>push</FONT><FONT color=3D#00ffff>(</FONT> =
@<FONT color=3D#00ffff>{</FONT><FONT color=3D#cdcd00>$ttys</FONT><FONT =
color=3D#00ffff>{</FONT>$user<FONT color=3D#00ffff>}}</FONT>, $tty <FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#00ffff>}</FONT>

<FONT color=3D#ffa500>foreach</FONT> <FONT color=3D#9ac0cd>$user</FONT> =
<FONT color=3D#00ffff>(</FONT><FONT color=3D#ff7f50>sort</FONT> <FONT =
color=3D#ff7f50>keys</FONT> <FONT color=3D#cdcd00>%ttys</FONT><FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"$user: =
@{</FONT><FONT color=3D#cdcd00>$ttys</FONT><FONT =
color=3D#00cd00>{$user}}\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>foreach</FONT> <FONT =
color=3D#9ac0cd>$user</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#ff7f50>sort</FONT> <FONT color=3D#ff7f50>keys</FONT> <FONT =
color=3D#cdcd00>%ttys</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"$user: =
"</FONT>, <FONT color=3D#ff7f50>scalar</FONT><FONT =
color=3D#00ffff>(</FONT> @<FONT color=3D#00ffff>{</FONT><FONT =
color=3D#cdcd00>$ttys</FONT><FONT color=3D#00ffff>{</FONT>$user<FONT =
color=3D#00ffff>}}</FONT> <FONT color=3D#00ffff>)</FONT>, <FONT =
color=3D#00cd00>" ttys.\n"</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ffa500>foreach</FONT> <FONT =
color=3D#9ac0cd>$tty</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#ff7f50>sort</FONT> @<FONT color=3D#00ffff>{</FONT><FONT =
color=3D#cdcd00>$ttys</FONT><FONT color=3D#00ffff>{</FONT>$user<FONT =
color=3D#00ffff>}})</FONT> <FONT color=3D#00ffff>{</FONT>
        <FONT color=3D#cdad00>@stat</FONT> =3D <FONT =
color=3D#98fb98>stat</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"/dev/$tty"</FONT><FONT color=3D#00ffff>);</FONT>
        $user =3D <FONT color=3D#cdad00>@stat</FONT> ? <FONT =
color=3D#00ffff>(</FONT> <FONT color=3D#98fb98>getpwuid</FONT><FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdad00>$stat</FONT><FONT =
color=3D#00ffff>[</FONT><FONT color=3D#cdcd00>4</FONT><FONT =
color=3D#00ffff>])</FONT> <FONT color=3D#00ffff>)[</FONT><FONT =
color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>]</FONT> : <FONT =
color=3D#00cd00>"(not available)"</FONT><FONT color=3D#00ffff>;</FONT>
        <FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"\t$tty =
(owned by $user)\n"</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#00ffff>}</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>sub</FONT> multihash_<FONT =
color=3D#ff7f50>delete</FONT> <FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>my</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#9ac0cd>$hash</FONT>, <FONT color=3D#9ac0cd>$key</FONT>, <FONT =
color=3D#9ac0cd>$value</FONT><FONT color=3D#00ffff>)</FONT> =3D <FONT =
color=3D#cdad00>@_</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$i</FONT><FONT =
color=3D#00ffff>;</FONT>

    <FONT color=3D#ffa500>return</FONT> <FONT =
color=3D#ffa500>unless</FONT> <FONT color=3D#98fb98>ref</FONT><FONT =
color=3D#00ffff>(</FONT> $hash-&gt;<FONT =
color=3D#00ffff>{</FONT>$key<FONT color=3D#00ffff>}</FONT> <FONT =
color=3D#00ffff>);</FONT>
    <FONT color=3D#ffa500>for</FONT> <FONT color=3D#00ffff>(</FONT>$i =
=3D <FONT color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>;</FONT> $i &lt; =
@<FONT color=3D#00ffff>{</FONT> $hash-&gt;<FONT =
color=3D#00ffff>{</FONT>$key<FONT color=3D#00ffff>}</FONT> <FONT =
color=3D#00ffff>};</FONT> $i++<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
        <FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT>$hash-&gt;<FONT =
color=3D#00ffff>{</FONT>$key<FONT color=3D#00ffff>}</FONT>-&gt;<FONT =
color=3D#00ffff>[</FONT>$i<FONT color=3D#00ffff>]</FONT> <FONT =
color=3D#98fb98>eq</FONT> $value<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
            <FONT color=3D#ff7f50>splice</FONT><FONT =
color=3D#00ffff>(</FONT> @<FONT color=3D#00ffff>{</FONT>$hash-&gt;<FONT =
color=3D#00ffff>{</FONT>$key<FONT color=3D#00ffff>}}</FONT>, $i, <FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>);</FONT>
            <FONT color=3D#ffa500>last</FONT><FONT =
color=3D#00ffff>;</FONT>
        <FONT color=3D#00ffff>}</FONT>
    <FONT color=3D#00ffff>}</FONT>

    <FONT color=3D#ff7f50>delete</FONT> $hash-&gt;<FONT =
color=3D#00ffff>{</FONT>$key<FONT color=3D#00ffff>}</FONT> <FONT =
color=3D#ffa500>unless</FONT> @<FONT =
color=3D#00ffff>{</FONT>$hash-&gt;<FONT =
color=3D#00ffff>{</FONT>$key<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=3DAEN256>Inverting a 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#cdcd00>%LOOKUP</FONT><FONT color=3D#bebebe> maps =
keys to values
</FONT><FONT color=3D#cdcd00>%REVERSE</FONT> =3D <FONT =
color=3D#98fb98>reverse</FONT> <FONT color=3D#cdcd00>%LOOKUP</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#cdcd00>%surname</FONT> =3D <FONT =
color=3D#00ffff>(</FONT> <FONT color=3D#00cd00>"Mickey"</FONT> =3D&gt; =
<FONT color=3D#00cd00>"Mantle"</FONT>, <FONT =
color=3D#00cd00>"Babe"</FONT> =3D&gt; <FONT =
color=3D#00cd00>"Ruth"</FONT> <FONT color=3D#00ffff>);</FONT>
<FONT color=3D#cdcd00>%first_name</FONT> =3D <FONT =
color=3D#98fb98>reverse</FONT> <FONT =
color=3D#cdcd00>%surname</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT =
color=3D#cdcd00>$first_name</FONT><FONT color=3D#00ffff>{</FONT><FONT =
color=3D#00cd00>"Mantle"</FONT><FONT color=3D#00ffff>}</FONT>, <FONT =
color=3D#00cd00>"\n"</FONT><FONT color=3D#00ffff>;</FONT>
Mickey
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"Mickey"</FONT>, <FONT color=3D#00cd00>"Mantle"</FONT>, =
<FONT color=3D#00cd00>"Babe"</FONT>, <FONT =
color=3D#00cd00>"Ruth"</FONT><FONT color=3D#00ffff>)</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"Ruth"</FONT>, <FONT color=3D#00cd00>"Babe"</FONT>, =
<FONT color=3D#00cd00>"Mantle"</FONT>, <FONT =
color=3D#00cd00>"Mickey"</FONT><FONT color=3D#00ffff>)</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#00ffff>(</FONT><FONT color=3D#00cd00>"Ruth"</FONT> =
=3D&gt; <FONT color=3D#00cd00>"Babe"</FONT>, <FONT =
color=3D#00cd00>"Mantle"</FONT> =3D&gt; <FONT =
color=3D#00cd00>"Mickey"</FONT><FONT color=3D#00ffff>)</FONT>
<FONT color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch05/foodfind">download=
 the following standalone program</A></FONT>
#!/usr/bin/perl -w
# foodfind - find match for food or color
</FONT>
$given =3D <FONT color=3D#ff7f50>shift</FONT> <FONT =
color=3D#cdad00>@ARGV</FONT> <FONT color=3D#98fb98>or</FONT> <FONT =

⌨️ 快捷键说明

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