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

📄 userinterfaces.mht

📁 Perl 编程技巧大全。适合初学者阅读。
💻 MHT
📖 第 1 页 / 共 5 页
字号:
program output\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch15/vbsh">download =
the following standalone program</A></FONT>
#!/usr/bin/perl -w
# vbsh -  very bad shell
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>strict</FONT><FONT color=3D#00ffff>;</FONT>

<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>Term::ReadLine</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT color=3D#b2dfee>POSIX</FONT> =
<FONT color=3D#ff7f50>qw</FONT><FONT color=3D#00ffff>(</FONT>:sys_<FONT =
color=3D#98fb98>wait</FONT>_h<FONT color=3D#00ffff>);</FONT>

<FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$term</FONT> =3D =
Term::ReadLine-&gt;new<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"Simple Shell"</FONT><FONT color=3D#00ffff>);</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$OUT</FONT> =3D =
$term-&gt;OUT<FONT color=3D#00ffff>()</FONT> || *STDOUT<FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$cmd</FONT><FONT =
color=3D#00ffff>;</FONT>

<FONT color=3D#ffa500>while</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#ff7f50>defined</FONT> <FONT color=3D#00ffff>(</FONT>$cmd =3D =
$term-&gt;<FONT color=3D#98fb98>readline</FONT><FONT =
color=3D#00ffff>(</FONT><FONT color=3D#00cd00>'$ '</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#cdad00>@output</FONT> =
=3D <FONT color=3D#00cd00>`$cmd`</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#9ac0cd>$exit_value</FONT>  =3D $? &gt;&gt; <FONT =
color=3D#cdcd00>8</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#9ac0cd>$signal_num</FONT>  =3D $? &amp; <FONT =
color=3D#cdcd00>127</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#9ac0cd>$dumped_core</FONT> =3D $? &amp; <FONT =
color=3D#cdcd00>128</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ff7f50>printf</FONT> $OUT <FONT =
color=3D#00cd00>"Program terminated with status </FONT><FONT =
color=3D#cdcd00>%d</FONT><FONT color=3D#00cd00> from signal </FONT><FONT =
color=3D#cdcd00>%d%s</FONT><FONT color=3D#00cd00>\n"</FONT>,
           $exit_value, $signal_num,<FONT color=3D#43cd80> </FONT>
           $dumped_core ? <FONT color=3D#00cd00>" (core dumped)"</FONT> =
: <FONT color=3D#00cd00>""</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ff7f50>print</FONT> <FONT =
color=3D#cdad00>@output</FONT><FONT color=3D#00ffff>;</FONT>
    $term-&gt;addhistory<FONT color=3D#00ffff>(</FONT>$seed_line<FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#00ffff>}</FONT>

<FONT color=3D#bebebe>#-----------------------------
</FONT>$term-&gt;addhistory<FONT color=3D#00ffff>(</FONT>$seed_line<FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>$term-&gt;remove_history<FONT =
color=3D#00ffff>(</FONT>$line_number<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#cdad00>@history</FONT> =3D =
$term-&gt;GetHistory<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=3DAEN825>Managing the Screen</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>#-----------------------------
#% rep ps aux
#% rep netstat
#% rep -2.5 lpq
#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch15/rep">download the =
following standalone program</A></FONT>
#!/usr/bin/perl -w
# rep - screen repeat command
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>strict</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>Curses</FONT><FONT color=3D#00ffff>;</FONT>

<FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$timeout</FONT> =
=3D <FONT color=3D#cdcd00>10</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdad00>@ARGV</FONT> &amp;&amp; <FONT =
color=3D#cdad00>$ARGV</FONT><FONT color=3D#00ffff>[</FONT><FONT =
color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>]</FONT> =3D~ /^-<FONT =
color=3D#00ffff>(</FONT>\d+\.?\d*<FONT color=3D#00ffff>)</FONT>$/<FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT><FONT =
color=3D#43cd80> </FONT>
    $timeout =3D $<FONT color=3D#cdcd00>1</FONT><FONT =
color=3D#00ffff>;</FONT><FONT color=3D#43cd80> </FONT>
    <FONT color=3D#ff7f50>shift</FONT><FONT =
color=3D#00ffff>;</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>

<FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"usage: $0 [ =
-timeout ] cmd args\n"</FONT> <FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#43cd80>    </FONT>
initscr<FONT color=3D#00ffff>();</FONT>          <FONT color=3D#bebebe># =
start screen
</FONT>noecho<FONT color=3D#00ffff>();</FONT><FONT color=3D#43cd80>      =
     </FONT>
cbreak<FONT color=3D#00ffff>();</FONT><FONT color=3D#43cd80> </FONT>
nodelay<FONT color=3D#00ffff>(</FONT><FONT color=3D#cdcd00>1</FONT><FONT =
color=3D#00ffff>);</FONT>         <FONT color=3D#bebebe># so getch() is =
non-blocking
</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#ffa500>sub</FONT> <FONT color=3D#00ffff>{</FONT> done<FONT =
color=3D#00ffff>(</FONT><FONT color=3D#00cd00>"Ouch!"</FONT><FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>};</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>done</FONT> <FONT =
color=3D#00ffff>{</FONT> endwin<FONT color=3D#00ffff>();</FONT> <FONT =
color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"</FONT><FONT =
color=3D#cdad00>@_</FONT><FONT color=3D#00cd00>\n"</FONT><FONT =
color=3D#00ffff>;</FONT> <FONT color=3D#ffa500>exit</FONT><FONT =
color=3D#00ffff>;</FONT> <FONT color=3D#00ffff>}</FONT>

<FONT color=3D#ffa500>while</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>while</FONT> <FONT =
color=3D#00ffff>((</FONT><FONT color=3D#ffa500>my</FONT> $key =3D =
getch<FONT color=3D#00ffff>())</FONT> <FONT color=3D#98fb98>ne</FONT> =
ERR<FONT color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>    =
<FONT color=3D#bebebe># maybe multiple keys
</FONT>        done<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"See ya"</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#ffa500>if</FONT> $key <FONT color=3D#98fb98>eq</FONT> <FONT =
color=3D#00cd00>'q'</FONT><FONT color=3D#43cd80> </FONT>
    <FONT color=3D#00ffff>}</FONT>
    <FONT color=3D#ffa500>my</FONT> <FONT color=3D#cdad00>@data</FONT> =
=3D <FONT color=3D#00cd00>`(</FONT><FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00cd00>) =
2&gt;&amp;1`</FONT><FONT color=3D#00ffff>;</FONT>              <FONT =
color=3D#bebebe># gather output+errors
</FONT>    <FONT color=3D#ffa500>for</FONT> <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#ffa500>my</FONT> $i =3D <FONT =
color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>;</FONT> $i &lt; =
$LINES<FONT color=3D#00ffff>;</FONT> $i++<FONT color=3D#00ffff>)</FONT> =
<FONT color=3D#00ffff>{</FONT>
        addstr<FONT color=3D#00ffff>(</FONT>$i, <FONT =
color=3D#cdcd00>0</FONT>, <FONT color=3D#cdad00>$data</FONT><FONT =
color=3D#00ffff>[</FONT>$i<FONT color=3D#00ffff>]</FONT> || <FONT =
color=3D#00cd00>' '</FONT> <FONT color=3D#98fb98>x</FONT> $COLS<FONT =
color=3D#00ffff>);</FONT>
    <FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>

    standout<FONT color=3D#00ffff>();</FONT>
    addstr<FONT color=3D#00ffff>(</FONT>$LINES<FONT =
color=3D#cdcd00>-1</FONT>, $COLS - <FONT color=3D#cdcd00>24</FONT>, =
<FONT color=3D#ff7f50>scalar</FONT> <FONT =
color=3D#98fb98>localtime</FONT><FONT color=3D#00ffff>);</FONT>
    standend<FONT color=3D#00ffff>();</FONT>

    move<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>0</FONT>,<FONT color=3D#cdcd00>0</FONT><FONT =
color=3D#00ffff>);</FONT><FONT color=3D#43cd80> </FONT>
    refresh<FONT color=3D#00ffff>();</FONT>                              =
<FONT color=3D#bebebe># flush new output to display
</FONT>
    <FONT color=3D#ffa500>my</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#9ac0cd>$in</FONT>, <FONT color=3D#9ac0cd>$out</FONT><FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>''</FONT>, <FONT color=3D#00cd00>''</FONT><FONT =
color=3D#00ffff>);</FONT>
    <FONT color=3D#98fb98>vec</FONT><FONT =
color=3D#00ffff>(</FONT>$in,<FONT color=3D#98fb98>fileno</FONT><FONT =
color=3D#00ffff>(</FONT>STDIN<FONT color=3D#00ffff>)</FONT>,<FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>)</FONT> =3D <FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>;</FONT>           <FONT =
color=3D#bebebe># look for key on stdin</FONT><FONT color=3D#43cd80> =
</FONT><FONT color=3D#bebebe>
</FONT>    <FONT color=3D#98fb98>select</FONT><FONT =
color=3D#00ffff>(</FONT>$out =3D $in,<FONT =
color=3D#ff7f50>undef</FONT>,<FONT =
color=3D#ff7f50>undef</FONT>,$timeout<FONT =
color=3D#00ffff>);</FONT><FONT color=3D#bebebe># wait up to this long
</FONT><FONT color=3D#00ffff>}</FONT>

<FONT color=3D#bebebe>#-----------------------------
</FONT>keypad<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>);</FONT>                  =
<FONT color=3D#bebebe># enable keypad mode
</FONT>$key =3D getch<FONT color=3D#00ffff>();</FONT>
<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT>$key <FONT =
color=3D#98fb98>eq</FONT> <FONT color=3D#00cd00>'k'</FONT>     ||      =
<FONT color=3D#bebebe># vi mode
</FONT>    $key <FONT color=3D#98fb98>eq</FONT> <FONT =
color=3D#00cd00>"\cP"</FONT>   ||      <FONT color=3D#bebebe># emacs =
mode
</FONT>    $key <FONT color=3D#98fb98>eq</FONT> KEY_UP<FONT =
color=3D#00ffff>)</FONT>         <FONT color=3D#bebebe># arrow mode
</FONT><FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#bebebe># do something
</FONT><FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#bebebe>#-----------------------------
#		       Template Entry Demonstration</FONT><FONT color=3D#43cd80> =
</FONT><FONT color=3D#bebebe>
#
#   Address Data Example                                     Record # =
___
#
#   Name: [________________________________________________]
#   Addr: [________________________________________________]
#   City: [__________________]          State: [__]       Zip: =
[\\\\\]</FONT><FONT color=3D#43cd80> </FONT><FONT color=3D#bebebe>
#
#   Phone: (\\\) \\\-\\\\                            Password: =
[^^^^^^^^]
#
#   Enter all information available.
#   Edit fields with left/right arrow keys or "delete".
#   Switch fields with "Tab" or up/down arrow keys.
#   Indicate completion by pressing "Return".
#   Refresh screen with "Control-L".
#   Abort this demo here with "Control-X".
#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN828>Controlling Another Program with =
Expect</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>Expect</FONT><FONT color=3D#00ffff>;</FONT>

$command =3D Expect-&gt;spawn<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"program to run"</FONT><FONT color=3D#00ffff>)</FONT>
    <FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"Couldn't start program: $!\n"</FONT><FONT =
color=3D#00ffff>;</FONT>

<FONT color=3D#bebebe># prevent the program's output from being shown on =
our STDOUT
</FONT>$command-&gt;<FONT color=3D#98fb98>log</FONT>_stdout<FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdcd00>0</FONT><FONT =
color=3D#00ffff>);</FONT>

<FONT color=3D#bebebe># wait 10 seconds for "Password:" to appear
</FONT><FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#00ffff>(</FONT>$command-&gt;expect<FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdcd00>10</FONT>, <FONT =
color=3D#00cd00>"Password"</FONT><FONT color=3D#00ffff>))</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#bebebe># timed out
</FONT><FONT color=3D#00ffff>}</FONT>

<FONT color=3D#bebebe># wait 20 seconds for something that matches =
/[lL]ogin: ?/
</FONT><FONT color=3D#ffa500>unless</FONT> <FONT =

⌨️ 快捷键说明

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