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

📄 filecontents.mht

📁 Perl 编程技巧大全。适合初学者阅读。
💻 MHT
📖 第 1 页 / 共 5 页
字号:
<FONT color=3D#98fb98>seek</FONT><FONT color=3D#00ffff>(</FONT>LASTLOG, =
-$sizeof, SEEK_CUR<FONT color=3D#00ffff>)</FONT>   <FONT =
color=3D#bebebe># backup one record
</FONT>    <FONT color=3D#98fb98>or</FONT> <FONT =
color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"seek failed: =
$!"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>print</FONT> LASTLOG $record<FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#43cd80>    </FONT>
<FONT color=3D#98fb98>close</FONT><FONT =
color=3D#00ffff>(</FONT>LASTLOG<FONT color=3D#00ffff>)</FONT>
    <FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"close failed: $!"</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=3DAEN472>Reading a String from a Binary =
File</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>$old_rs =3D $/<FONT color=3D#00ffff>;</FONT>                      =
 <FONT color=3D#bebebe># save old $/
</FONT>$/ =3D <FONT color=3D#00cd00>"\0"</FONT><FONT =
color=3D#00ffff>;</FONT>                          <FONT =
color=3D#bebebe># NULL
</FONT><FONT color=3D#98fb98>seek</FONT><FONT =
color=3D#00ffff>(</FONT>FH, $addr, SEEK_SET<FONT =
color=3D#00ffff>)</FONT>           <FONT color=3D#98fb98>or</FONT> <FONT =
color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"Seek error: =
$!\n"</FONT><FONT color=3D#00ffff>;</FONT>
$string =3D &lt;FH&gt;<FONT color=3D#00ffff>;</FONT>                     =
<FONT color=3D#bebebe># read string
</FONT><FONT color=3D#ff7f50>chomp</FONT> $string<FONT =
color=3D#00ffff>;</FONT>                      <FONT color=3D#bebebe># =
remove NULL
</FONT>$/ =3D $old_rs<FONT color=3D#00ffff>;</FONT>                      =
 <FONT color=3D#bebebe># restore old $/
#-----------------------------
</FONT><FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>local</FONT> $/ =3D <FONT =
color=3D#00cd00>"\0"</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#bebebe># ...
</FONT><FONT color=3D#00ffff>}</FONT>                           <FONT =
color=3D#bebebe># $/ is automatically restored
#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch08/bgets">download =
the following standalone program</A></FONT>
#!/usr/bin/perl</FONT><FONT color=3D#43cd80> </FONT><FONT =
color=3D#bebebe>
# bgets - get a string from an address in a binary file
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>IO::Seekable</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>(</FONT>$file, <FONT =
color=3D#cdad00>@addrs</FONT><FONT color=3D#00ffff>)</FONT> =3D <FONT =
color=3D#cdad00>@ARGV</FONT>             <FONT color=3D#98fb98>or</FONT> =
<FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"usage: $0 addr =
..."</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#98fb98>open</FONT><FONT color=3D#00ffff>(</FONT>FH, =
$file<FONT color=3D#00ffff>)</FONT>                     <FONT =
color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"cannot open $file: $!"</FONT><FONT =
color=3D#00ffff>;</FONT>
$/ =3D <FONT color=3D#00cd00>"\000"</FONT><FONT color=3D#00ffff>;</FONT>

<FONT color=3D#ffa500>foreach</FONT> <FONT color=3D#9ac0cd>$addr</FONT> =
<FONT color=3D#00ffff>(</FONT><FONT color=3D#cdad00>@addrs</FONT><FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
    $addr =3D <FONT color=3D#98fb98>oct</FONT> $addr <FONT =
color=3D#ffa500>if</FONT> $addr =3D~ /^<FONT =
color=3D#cdcd00>0</FONT>/<FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#98fb98>seek</FONT><FONT color=3D#00ffff>(</FONT>FH, =
$addr, SEEK_SET<FONT color=3D#00ffff>)</FONT>
        <FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"can't seek to $addr in $file: $!"</FONT><FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#ff7f50>printf</FONT> <FONT =
color=3D#ff7f50>qq</FONT><FONT color=3D#00ffff>{</FONT>%<FONT =
color=3D#bebebe>#x %#o </FONT><FONT color=3D#cdcd00>%d</FONT><FONT =
color=3D#bebebe> "</FONT><FONT color=3D#cdcd00>%s</FONT><FONT =
color=3D#bebebe>"\n}, $addr, $addr, $addr, scalar &lt;&gt;;
</FONT><FONT color=3D#00ffff>}</FONT>

<FONT color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch08/strings">download =
the following standalone program</A></FONT>
#!/usr/bin/perl
# strings - pull strings out of a binary file
</FONT>$/ =3D <FONT color=3D#00cd00>"\0"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>while</FONT> <FONT =
color=3D#00ffff>(</FONT>&lt;&gt;<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>while</FONT> <FONT =
color=3D#00ffff>(</FONT>/<FONT color=3D#00ffff>([</FONT>\<FONT =
color=3D#cdcd00>040</FONT>-\<FONT color=3D#cdcd00>176</FONT>\s<FONT =
color=3D#00ffff>]{</FONT><FONT color=3D#cdcd00>4</FONT>,<FONT =
color=3D#00ffff>})</FONT>/g<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
        <FONT color=3D#ff7f50>print</FONT> $<FONT =
color=3D#cdcd00>1</FONT>, <FONT color=3D#00cd00>"\n"</FONT><FONT =
color=3D#00ffff>;</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=3DAEN475>Reading Fixed-Length Records</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>#-----------------------------
# $RECORDSIZE is the length of a record, in bytes.
# $TEMPLATE is the unpack template for the record
# FILE is the file to read from
# </FONT><FONT color=3D#cdad00>@FIELDS</FONT><FONT color=3D#bebebe> is =
an array, one element per field
</FONT>
<FONT color=3D#ffa500>until</FONT> <FONT color=3D#00ffff>(</FONT> <FONT =
color=3D#98fb98>eof</FONT><FONT color=3D#00ffff>(</FONT>FILE<FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#98fb98>read</FONT><FONT color=3D#00ffff>(</FONT>FILE, =
$record, $RECORDSIZE<FONT color=3D#00ffff>)</FONT> =3D=3D $RECORDSIZE
        <FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"short read\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#cdad00>@FIELDS</FONT> =3D <FONT =
color=3D#98fb98>unpack</FONT><FONT color=3D#00ffff>(</FONT>$TEMPLATE, =
$record<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
#define UT_LINESIZE           12
#define UT_NAMESIZE           8
#define UT_HOSTSIZE           16
</FONT>
struct utmp <FONT color=3D#00ffff>{</FONT>                       /* here =
are the <FONT color=3D#98fb98>pack</FONT> template codes */
    short ut_type<FONT color=3D#00ffff>;</FONT>                  /* =
<FONT color=3D#ff7f50>s</FONT> <FONT color=3D#ffa500>for</FONT> short, =
must be padded      */
    pid_t ut_pid<FONT color=3D#00ffff>;</FONT>                   /* i =
<FONT color=3D#ffa500>for</FONT> integer                    */
    char ut_line<FONT color=3D#00ffff>[</FONT>UT_LINESIZE<FONT =
color=3D#00ffff>];</FONT>      /* A12 <FONT color=3D#ffa500>for</FONT> =
<FONT color=3D#cdcd00>12</FONT>-char string           */
    char ut_id<FONT color=3D#00ffff>[</FONT><FONT =
color=3D#cdcd00>2</FONT><FONT color=3D#00ffff>];</FONT>                  =
/* A2, but need x2 <FONT color=3D#ffa500>for</FONT> alignment    */
    <FONT color=3D#98fb98>time</FONT>_t ut_<FONT =
color=3D#98fb98>time</FONT><FONT color=3D#00ffff>;</FONT>                =
 /* l <FONT color=3D#ffa500>for</FONT> long                       */
    char ut_user<FONT color=3D#00ffff>[</FONT>UT_NAMESIZE<FONT =
color=3D#00ffff>];</FONT>      /* A8 <FONT color=3D#ffa500>for</FONT> =
<FONT color=3D#cdcd00>8</FONT>-char string             */
    char ut_host<FONT color=3D#00ffff>[</FONT>UT_HOSTSIZE<FONT =
color=3D#00ffff>];</FONT>      /* A16 <FONT color=3D#ffa500>for</FONT> =
<FONT color=3D#cdcd00>16</FONT>-char string           */
    long ut_addr<FONT color=3D#00ffff>;</FONT>                   /* l =
<FONT color=3D#ffa500>for</FONT> long                       */
<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=3DAEN478>Reading Configuration Files</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>while</FONT> <FONT =
color=3D#00ffff>(</FONT>&lt;CONFIG&gt;<FONT color=3D#00ffff>)</FONT> =
<FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ff7f50>chomp</FONT><FONT color=3D#00ffff>;</FONT>     =
             <FONT color=3D#bebebe># no newline
</FONT>    <FONT color=3D#ff7f50>s</FONT>/<FONT color=3D#bebebe>#.*//;   =
             # no comments
</FONT>    <FONT color=3D#ff7f50>s</FONT>/^\s+//<FONT =
color=3D#00ffff>;</FONT>               <FONT color=3D#bebebe># no =
leading white
</FONT>    <FONT color=3D#ff7f50>s</FONT>/\s+$//<FONT =
color=3D#00ffff>;</FONT>               <FONT color=3D#bebebe># no =
trailing white
</FONT>    <FONT color=3D#ffa500>next</FONT> <FONT =
color=3D#ffa500>unless</FONT> <FONT color=3D#98fb98>length</FONT><FONT =
color=3D#00ffff>;</FONT>     <FONT color=3D#bebebe># anything left?
</FONT>    <FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#9ac0cd>$var</FONT>, <FONT =
color=3D#9ac0cd>$value</FONT><FONT color=3D#00ffff>)</FONT> =3D <FONT =
color=3D#ff7f50>split</FONT><FONT color=3D#00ffff>(</FONT>/\s*=3D\s*/, =
$_, <FONT color=3D#cdcd00>2</FONT><FONT color=3D#00ffff>);</FONT>
    <FONT color=3D#cdcd00>$User_Preferences</FONT><FONT =
color=3D#00ffff>{</FONT>$var<FONT color=3D#00ffff>}</FONT> =3D =
$value<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>do</FONT> <FONT =
color=3D#00cd00>"</FONT><FONT color=3D#cdcd00>$ENV</FONT><FONT =
color=3D#00cd00>{HOME}/.progrc"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
# set class C net
</FONT>NETMASK =3D <FONT color=3D#cdcd00>255.255</FONT>.<FONT =
color=3D#cdcd00>255.0</FONT>
MTU     =3D <FONT color=3D#cdcd00>296</FONT>
<FONT color=3D#43cd80>    </FONT>
DEVICE  =3D cua1
RATE    =3D <FONT color=3D#cdcd00>115200</FONT>
MODE    =3D adaptive
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ff7f50>no</FONT> <FONT =
color=3D#b2dfee>strict</FONT> <FONT color=3D#00cd00>'refs'</FONT><FONT =
color=3D#00ffff>;</FONT>
$$var =3D $value<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
# set class C net
</FONT>$NETMASK =3D <FONT color=3D#00cd00>'255.255.255.0'</FONT><FONT =
color=3D#00ffff>;</FONT>
$MTU     =3D 0x128<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe># Brent, please turn on the modem
</FONT>$DEVICE  =3D <FONT color=3D#00cd00>'cua1'</FONT><FONT =
color=3D#00ffff>;</FONT>
$RATE    =3D <FONT color=3D#cdcd00>115</FONT>_<FONT =
color=3D#cdcd00>200</FONT><FONT color=3D#00ffff>;</FONT>
$MODE    =3D <FONT color=3D#00cd00>'adaptive'</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#00ffff>(</FONT>$DEVICE =3D~ /<FONT =
color=3D#cdcd00>1</FONT>$/<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
    $RATE =3D  <FONT color=3D#cdcd00>28</FONT>_<FONT =
color=3D#cdcd00>800</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT> <FONT color=3D#ffa500>else</FONT> <FONT =
color=3D#00ffff>{</FONT>
    $RATE =3D <FONT color=3D#cdcd00>115</FONT>_<FONT =
color=3D#cdcd00>200</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT><FONT color=3D#43cd80> </FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>$APPDFLT =3D <FONT =
color=3D#00cd00>"/usr/local/share/myprog"</FONT><FONT =
color=3D#00ffff>;</FONT>

<FONT color=3D#ffa500>do</FONT> <FONT =
color=3D#00cd00>"$APPDFLT/sysconfig.pl"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>do</FONT> <FONT color=3D#00cd00>"</FONT><FONT =
color=3D#cdcd00>$ENV</FONT><FONT =
color=3D#00cd00>{HOME}/.myprogrc"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>do</

⌨️ 快捷键说明

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