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

📄 userinterfaces.mht

📁 Perl 编程技巧大全。适合初学者阅读。
💻 MHT
📖 第 1 页 / 共 5 页
字号:
  <TBODY>
  <TR>
    <TD><PRE class=3DSCREEN><FONT color=3D#f5deb3 size=3D+1><FONT =
color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch15/demo">download =
the following standalone program</A></FONT>
#!/usr/bin/perl -w
# demo POSIX termios
</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT color=3D#b2dfee>POSIX</FONT> =
<FONT color=3D#ff7f50>qw</FONT><FONT =
color=3D#00ffff>(</FONT>:termios_h<FONT color=3D#00ffff>);</FONT>

$term =3D POSIX::Termios-&gt;new<FONT color=3D#00ffff>;</FONT>
$term-&gt;getattr<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#98fb98>fileno</FONT><FONT color=3D#00ffff>(</FONT>STDIN<FONT =
color=3D#00ffff>));</FONT>

$erase =3D $term-&gt;getcc<FONT color=3D#00ffff>(</FONT>VERASE<FONT =
color=3D#00ffff>);</FONT>
$kill =3D $term-&gt;getcc<FONT color=3D#00ffff>(</FONT>VKILL<FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#ff7f50>printf</FONT> <FONT color=3D#00cd00>"Erase is =
character </FONT><FONT color=3D#cdcd00>%d</FONT><FONT color=3D#00cd00>, =
</FONT><FONT color=3D#cdcd00>%s</FONT><FONT color=3D#00cd00>\n"</FONT>, =
$erase, uncontrol<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#98fb98>chr</FONT><FONT color=3D#00ffff>(</FONT>$erase<FONT =
color=3D#00ffff>));</FONT>
<FONT color=3D#ff7f50>printf</FONT> <FONT color=3D#00cd00>"Kill is =
character </FONT><FONT color=3D#cdcd00>%d</FONT><FONT color=3D#00cd00>, =
</FONT><FONT color=3D#cdcd00>%s</FONT><FONT color=3D#00cd00>\n"</FONT>, =
$kill, uncontrol<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#98fb98>chr</FONT><FONT color=3D#00ffff>(</FONT>$kill<FONT =
color=3D#00ffff>));</FONT>

$term-&gt;setcc<FONT color=3D#00ffff>(</FONT>VERASE, <FONT =
color=3D#98fb98>ord</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>'#'</FONT><FONT color=3D#00ffff>));</FONT>
$term-&gt;setcc<FONT color=3D#00ffff>(</FONT>VKILL, <FONT =
color=3D#98fb98>ord</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>'@'</FONT><FONT color=3D#00ffff>));</FONT>
$term-&gt;setattr<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>1</FONT>, TCSANOW<FONT color=3D#00ffff>);</FONT>

<FONT color=3D#ff7f50>print</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"erase is #, kill is @; type something: "</FONT><FONT =
color=3D#00ffff>);</FONT>
$line =3D &lt;STDIN&gt;<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"You typed: =
$line"</FONT><FONT color=3D#00ffff>;</FONT>

$term-&gt;setcc<FONT color=3D#00ffff>(</FONT>VERASE, $erase<FONT =
color=3D#00ffff>);</FONT>
$term-&gt;setcc<FONT color=3D#00ffff>(</FONT>VKILL, $kill<FONT =
color=3D#00ffff>);</FONT>
$term-&gt;setattr<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>1</FONT>, TCSANOW<FONT color=3D#00ffff>);</FONT>

<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>uncontrol</FONT> =
<FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>local</FONT> <FONT color=3D#9ac0cd>$_</FONT> =
=3D <FONT color=3D#ff7f50>shift</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ff7f50>s</FONT>/<FONT color=3D#00ffff>([</FONT>\<FONT =
color=3D#cdcd00>200</FONT>-\<FONT color=3D#cdcd00>377</FONT><FONT =
color=3D#00ffff>])</FONT>/<FONT color=3D#98fb98>sprintf</FONT><FONT =
color=3D#00ffff>(</FONT><FONT color=3D#00cd00>"M-</FONT><FONT =
color=3D#cdcd00>%c</FONT><FONT color=3D#00cd00>"</FONT>,<FONT =
color=3D#98fb98>ord</FONT><FONT color=3D#00ffff>(</FONT>$<FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>)</FONT> &amp; <FONT =
color=3D#cdcd00>0177</FONT><FONT color=3D#00ffff>)</FONT>/eg<FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#ff7f50>s</FONT>/<FONT color=3D#00ffff>([</FONT>\<FONT =
color=3D#cdcd00>0</FONT>-\<FONT color=3D#cdcd00>37</FONT>\<FONT =
color=3D#cdcd00>177</FONT><FONT color=3D#00ffff>])</FONT>/<FONT =
color=3D#98fb98>sprintf</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"^</FONT><FONT color=3D#cdcd00>%c</FONT><FONT =
color=3D#00cd00>"</FONT>,<FONT color=3D#98fb98>ord</FONT><FONT =
color=3D#00ffff>(</FONT>$<FONT color=3D#cdcd00>1</FONT><FONT =
color=3D#00ffff>)</FONT> ^ <FONT color=3D#cdcd00>0100</FONT><FONT =
color=3D#00ffff>)</FONT>/eg<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>#-----------------------------
# HotKey.pm
</FONT><FONT color=3D#ffa500>package</FONT> <FONT =
color=3D#b2dfee>HotKey</FONT><FONT color=3D#00ffff>;</FONT>

<FONT color=3D#cdad00>@ISA</FONT> =3D <FONT =
color=3D#ff7f50>qw</FONT><FONT color=3D#00ffff>(</FONT>Exporter<FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#cdad00>@EXPORT</FONT> =3D <FONT =
color=3D#ff7f50>qw</FONT><FONT color=3D#00ffff>(</FONT>cbreak cooked =
readkey<FONT color=3D#00ffff>);</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>POSIX</FONT> =
<FONT color=3D#ff7f50>qw</FONT><FONT =
color=3D#00ffff>(</FONT>:termios_h<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#9ac0cd>$term</FONT>, <FONT color=3D#9ac0cd>$oterm</FONT>, <FONT =
color=3D#9ac0cd>$echo</FONT>, <FONT color=3D#9ac0cd>$noecho</FONT>, =
<FONT color=3D#9ac0cd>$fd_stdin</FONT><FONT color=3D#00ffff>);</FONT>

$fd_stdin =3D <FONT color=3D#98fb98>fileno</FONT><FONT =
color=3D#00ffff>(</FONT>STDIN<FONT color=3D#00ffff>);</FONT>
$term     =3D POSIX::Termios-&gt;new<FONT color=3D#00ffff>();</FONT>
$term-&gt;getattr<FONT color=3D#00ffff>(</FONT>$fd_stdin<FONT =
color=3D#00ffff>);</FONT>
$oterm     =3D $term-&gt;getlflag<FONT color=3D#00ffff>();</FONT>

$echo     =3D ECHO | ECHOK | ICANON<FONT color=3D#00ffff>;</FONT>
$noecho   =3D $oterm &amp; ~$echo<FONT color=3D#00ffff>;</FONT>

<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>cbreak</FONT> =
<FONT color=3D#00ffff>{</FONT>
    $term-&gt;setlflag<FONT color=3D#00ffff>(</FONT>$noecho<FONT =
color=3D#00ffff>);</FONT>  <FONT color=3D#bebebe># ok, so i don't want =
echo either
</FONT>    $term-&gt;setcc<FONT color=3D#00ffff>(</FONT>VTIME, <FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>);</FONT>
    $term-&gt;setattr<FONT color=3D#00ffff>(</FONT>$fd_stdin, =
TCSANOW<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#00ffff>}</FONT>

<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>cooked</FONT> =
<FONT color=3D#00ffff>{</FONT>
    $term-&gt;setlflag<FONT color=3D#00ffff>(</FONT>$oterm<FONT =
color=3D#00ffff>);</FONT>
    $term-&gt;setcc<FONT color=3D#00ffff>(</FONT>VTIME, <FONT =
color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>);</FONT>
    $term-&gt;setattr<FONT color=3D#00ffff>(</FONT>$fd_stdin, =
TCSANOW<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#00ffff>}</FONT>

<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>readkey</FONT> =
<FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$key</FONT> =
=3D <FONT color=3D#00cd00>''</FONT><FONT color=3D#00ffff>;</FONT>
    cbreak<FONT color=3D#00ffff>();</FONT>
    <FONT color=3D#98fb98>sysread</FONT><FONT =
color=3D#00ffff>(</FONT>STDIN, $key, <FONT color=3D#cdcd00>1</FONT><FONT =
color=3D#00ffff>);</FONT>
    cooked<FONT color=3D#00ffff>();</FONT>
    <FONT color=3D#ffa500>return</FONT> $key<FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>

<FONT color=3D#ffa500>END</FONT> <FONT color=3D#00ffff>{</FONT> =
cooked<FONT color=3D#00ffff>()</FONT> <FONT color=3D#00ffff>}</FONT>

<FONT color=3D#cdcd00>1</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=3DAEN816>Checking for Waiting Input</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>Term::ReadKey</FONT><FONT color=3D#00ffff>;</FONT>

ReadMode <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>'cbreak'</FONT><FONT color=3D#00ffff>);</FONT>

<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#ff7f50>defined</FONT> <FONT color=3D#00ffff>(</FONT>$char =3D =
ReadKey<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>-1</FONT><FONT color=3D#00ffff>))</FONT> <FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#bebebe># input was waiting and it was $char
</FONT><FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> =
<FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#bebebe># no input was waiting
</FONT><FONT color=3D#00ffff>}</FONT>

ReadMode <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>'normal'</FONT><FONT color=3D#00ffff>);</FONT>           =
       <FONT color=3D#bebebe># restore normal tty settings
#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN819>Reading Passwords</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>Term::ReadKey</FONT><FONT color=3D#00ffff>;</FONT>

ReadMode<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>'noecho'</FONT><FONT color=3D#00ffff>);</FONT>
$password =3D ReadLine<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch15/checkuser">downloa=
d the following standalone program</A></FONT>
#!/usr/bin/perl -w
# checkuser - demonstrates reading and checking a user's password
</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>Term::ReadKey</FONT><FONT color=3D#00ffff>;</FONT>

<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"Enter your =
password: "</FONT><FONT color=3D#00ffff>;</FONT>
ReadMode <FONT color=3D#00cd00>'noecho'</FONT><FONT =
color=3D#00ffff>;</FONT>
$password =3D ReadLine <FONT color=3D#cdcd00>0</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>chomp</FONT> $password<FONT =
color=3D#00ffff>;</FONT>
ReadMode <FONT color=3D#00cd00>'normal'</FONT><FONT =
color=3D#00ffff>;</FONT>

<FONT color=3D#ff7f50>print</FONT> <FONT =
color=3D#00cd00>"\n"</FONT><FONT color=3D#00ffff>;</FONT>

<FONT color=3D#00ffff>(</FONT>$username, $encrypted<FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#00ffff>(</FONT> <FONT =
color=3D#98fb98>getpwuid</FONT> $&lt; <FONT =
color=3D#00ffff>)[</FONT><FONT color=3D#cdcd00>0</FONT>,<FONT =
color=3D#cdcd00>1</FONT><FONT color=3D#00ffff>];</FONT>

<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#98fb98>crypt</FONT><FONT color=3D#00ffff>(</FONT>$password, =
$encrypted<FONT color=3D#00ffff>)</FONT> <FONT color=3D#98fb98>ne</FONT> =
$encrypted<FONT color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"You are not =
$username\n"</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#ff7f50>print</FONT> <FONT color=3D#00cd00>"Welcome, =
$username\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=3DAEN822>Editing Input</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>Term::ReadLine</FONT><FONT color=3D#00ffff>;</FONT>

$term =3D Term::ReadLine-&gt;new<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"APP DESCRIPTION"</FONT><FONT color=3D#00ffff>);</FONT>
$OUT =3D $term-&gt;OUT || *STDOUT<FONT color=3D#00ffff>;</FONT>

$term-&gt;addhistory<FONT color=3D#00ffff>(</FONT>$fake_line<FONT =
color=3D#00ffff>);</FONT>
$line =3D $term-&gt;<FONT color=3D#98fb98>readline</FONT><FONT =
color=3D#00ffff>(</FONT>PROMPT<FONT color=3D#00ffff>);</FONT>

<FONT color=3D#ff7f50>print</FONT> $OUT <FONT color=3D#00cd00>"Any =

⌨️ 快捷键说明

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