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

📄 filecontents.mht

📁 Perl 编程技巧大全。适合初学者阅读。
💻 MHT
📖 第 1 页 / 共 5 页
字号:
<FONT color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch08/print_line-v3">dow=
nload the following standalone program</A></FONT>
#!/usr/bin/perl -w
# print_line-v3 - DB_File style
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>DB_File</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT color=3D#b2dfee>Fcntl</FONT><FONT =
color=3D#00ffff>;</FONT>

<FONT color=3D#cdad00>@ARGV</FONT> =3D=3D <FONT color=3D#cdcd00>2</FONT> =
<FONT color=3D#98fb98>or</FONT>
    <FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"usage: =
print_line FILENAME LINE_NUMBER\n"</FONT><FONT color=3D#00ffff>;</FONT>

<FONT color=3D#00ffff>(</FONT>$filename, $line_number<FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#cdad00>@ARGV</FONT><FONT =
color=3D#00ffff>;</FONT>
$tie =3D <FONT color=3D#ff7f50>tie</FONT><FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdad00>@lines</FONT>, <FONT =
color=3D#00cd00>"DB_File"</FONT>, $filename, O_RDWR, <FONT =
color=3D#cdcd00>0666</FONT>, $DB_RECNO<FONT color=3D#00ffff>)</FONT>
        <FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"Cannot open file $filename: $!\n"</FONT><FONT =
color=3D#00ffff>;</FONT>

<FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#00ffff>(</FONT>$line_number &lt; $tie-&gt;<FONT =
color=3D#98fb98>length</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"Didn't find =
line $line_number in $filename\n"</FONT>
<FONT color=3D#00ffff>}</FONT>

<FONT color=3D#ff7f50>print</FONT> <FONT =
color=3D#cdad00>$lines</FONT><FONT =
color=3D#00ffff>[</FONT>$line_number<FONT color=3D#cdcd00>-1</FONT><FONT =
color=3D#00ffff>];</FONT>                        <FONT color=3D#bebebe># =
easy, eh?
</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN457>Processing Variable-Length Text =
Fields</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>#-----------------------------
# given $RECORD with field separated by PATTERN,
# extract </FONT><FONT color=3D#cdad00>@FIELDS</FONT><FONT =
color=3D#bebebe>.
</FONT><FONT color=3D#cdad00>@FIELDS</FONT> =3D <FONT =
color=3D#ff7f50>split</FONT><FONT color=3D#00ffff>(</FONT>/PATTERN/, =
$RECORD<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ff7f50>split</FONT><FONT =
color=3D#00ffff>(</FONT>/<FONT color=3D#00ffff>([</FONT>+-<FONT =
color=3D#00ffff>])</FONT>/, <FONT color=3D#00cd00>"3+5-2"</FONT><FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#00ffff>(</FONT><FONT color=3D#cdcd00>3</FONT>, =
<FONT color=3D#00cd00>'+'</FONT>, <FONT color=3D#cdcd00>5</FONT>, <FONT =
color=3D#00cd00>'-'</FONT>, <FONT color=3D#cdcd00>2</FONT><FONT =
color=3D#00ffff>)</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#cdad00>@fields</FONT> =3D <FONT =
color=3D#ff7f50>split</FONT><FONT color=3D#00ffff>(</FONT>/:/, =
$RECORD<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#cdad00>@fields</FONT> =3D <FONT =
color=3D#ff7f50>split</FONT><FONT color=3D#00ffff>(</FONT>/\s+/, =
$RECORD<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#cdad00>@fields</FONT> =3D <FONT =
color=3D#ff7f50>split</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>" "</FONT>, $RECORD<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=3DAEN460>Removing the Last Line of a =
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><FONT color=3D#98fb98>open</FONT> <FONT =
color=3D#00ffff>(</FONT>FH, <FONT color=3D#00cd00>"+&lt; =
$file"</FONT><FONT color=3D#00ffff>)</FONT>               <FONT =
color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"can't update $file: $!"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>while</FONT> <FONT color=3D#00ffff>(</FONT> =
&lt;FH&gt; <FONT color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
    $addr =3D <FONT color=3D#98fb98>tell</FONT><FONT =
color=3D#00ffff>(</FONT>FH<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#ffa500>unless</FONT> <FONT color=3D#98fb98>eof</FONT><FONT =
color=3D#00ffff>(</FONT>FH<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#98fb98>truncate</FONT><FONT color=3D#00ffff>(</FONT>FH, =
$addr<FONT color=3D#00ffff>)</FONT>                 <FONT =
color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"can't truncate $file: $!"</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=3DAEN463>Processing Binary 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#98fb98>binmode</FONT><FONT =
color=3D#00ffff>(</FONT>HANDLE<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>$gifname =3D <FONT color=3D#00cd00>"picture.gif"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#98fb98>open</FONT><FONT color=3D#00ffff>(</FONT>GIF, =
$gifname<FONT color=3D#00ffff>)</FONT>         <FONT =
color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"can't open $gifname: $!"</FONT><FONT =
color=3D#00ffff>;</FONT>

<FONT color=3D#98fb98>binmode</FONT><FONT =
color=3D#00ffff>(</FONT>GIF<FONT color=3D#00ffff>);</FONT>               =
<FONT color=3D#bebebe># now DOS won't mangle binary input from GIF
</FONT><FONT color=3D#98fb98>binmode</FONT><FONT =
color=3D#00ffff>(</FONT>STDOUT<FONT color=3D#00ffff>);</FONT>            =
<FONT color=3D#bebebe># now DOS won't mangle binary output to STDOUT
</FONT>
<FONT color=3D#ffa500>while</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#98fb98>read</FONT><FONT color=3D#00ffff>(</FONT>GIF, $buff, =
<FONT color=3D#cdcd00>8</FONT> * <FONT color=3D#cdcd00>2</FONT>**<FONT =
color=3D#cdcd00>10</FONT><FONT color=3D#00ffff>))</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#ff7f50>print</FONT> STDOUT $buff<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=3DAEN466>Using Random-Access I/O</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>$ADDRESS =3D $RECSIZE * $RECNO<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#98fb98>seek</FONT><FONT color=3D#00ffff>(</FONT>FH, =
$ADDRESS, <FONT color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>)</FONT> =
<FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"seek:$!"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#98fb98>read</FONT><FONT color=3D#00ffff>(</FONT>FH, =
$BUFFER, $RECSIZE<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>$ADDRESS =3D $RECSIZE * <FONT color=3D#00ffff>(</FONT>$RECNO<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=3DAEN469>Updating a Random-Access =
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><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>Fcntl</FONT><FONT color=3D#00ffff>;</FONT>               =
           <FONT color=3D#bebebe># for SEEK_SET and SEEK_CUR
</FONT>
$ADDRESS =3D $RECSIZE * $RECNO<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#98fb98>seek</FONT><FONT color=3D#00ffff>(</FONT>FH, =
$ADDRESS, SEEK_SET<FONT color=3D#00ffff>)</FONT>        <FONT =
color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"Seeking: $!"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#98fb98>read</FONT><FONT color=3D#00ffff>(</FONT>FH, =
$BUFFER, $RECSIZE<FONT color=3D#00ffff>)</FONT> =3D=3D $RECSIZE
                                    <FONT color=3D#98fb98>or</FONT> =
<FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"Reading: =
$!"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#cdad00>@FIELDS</FONT> =3D <FONT =
color=3D#98fb98>unpack</FONT><FONT color=3D#00ffff>(</FONT>$FORMAT, =
$BUFFER<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe># update fields, then
</FONT>$BUFFER =3D <FONT color=3D#98fb98>pack</FONT><FONT =
color=3D#00ffff>(</FONT>$FORMAT, <FONT =
color=3D#cdad00>@FIELDS</FONT><FONT color=3D#00ffff>);</FONT>
<FONT color=3D#98fb98>seek</FONT><FONT color=3D#00ffff>(</FONT>FH, =
-$RECSIZE, SEEK_CUR<FONT color=3D#00ffff>)</FONT>       <FONT =
color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"Seeking: $!"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>print</FONT> FH $BUFFER<FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#98fb98>close</FONT> FH                            <FONT =
color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"Closing: $!"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch08/weekearly">downloa=
d the following standalone program</A></FONT>
#!/usr/bin/perl
# weekearly -- set someone's login date back a week
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>User::pwent</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>IO::Seekable</FONT><FONT color=3D#00ffff>;</FONT>

$typedef =3D <FONT color=3D#00cd00>'L A12 A16'</FONT><FONT =
color=3D#00ffff>;</FONT>         <FONT color=3D#bebebe># linux fmt; =
sunos is "L A8 A16"
</FONT>$sizeof  =3D <FONT color=3D#98fb98>length</FONT><FONT =
color=3D#00ffff>(</FONT><FONT color=3D#98fb98>pack</FONT><FONT =
color=3D#00ffff>(</FONT>$typedef, <FONT color=3D#00ffff>()));</FONT>
$user    =3D <FONT color=3D#ff7f50>shift</FONT><FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdad00>@ARGV</FONT><FONT =
color=3D#00ffff>)</FONT> || <FONT color=3D#cdcd00>$ENV</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>USER</FONT><FONT =
color=3D#00ffff>}</FONT> || <FONT color=3D#cdcd00>$ENV</FONT><FONT =
color=3D#00ffff>{</FONT><FONT color=3D#00cd00>LOGNAME</FONT><FONT =
color=3D#00ffff>};</FONT>

$address =3D <FONT color=3D#98fb98>getpwnam</FONT><FONT =
color=3D#00ffff>(</FONT>$user<FONT color=3D#00ffff>)</FONT>-&gt;uid * =
$sizeof<FONT color=3D#00ffff>;</FONT>

<FONT color=3D#98fb98>open</FONT> <FONT color=3D#00ffff>(</FONT>LASTLOG, =
<FONT color=3D#00cd00>"+&lt;/var/log/lastlog"</FONT><FONT =
color=3D#00ffff>)</FONT>
    <FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"can't update /usr/adm/lastlog: $!"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#98fb98>seek</FONT><FONT color=3D#00ffff>(</FONT>LASTLOG, =
$address, SEEK_SET<FONT color=3D#00ffff>)</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#98fb98>read</FONT><FONT color=3D#00ffff>(</FONT>LASTLOG, =
$buffer, $sizeof<FONT color=3D#00ffff>)</FONT> =3D=3D $sizeof
    <FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"read failed: $!"</FONT><FONT =
color=3D#00ffff>;</FONT>

<FONT color=3D#00ffff>(</FONT>$time, $line, $host<FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#98fb98>unpack</FONT><FONT =
color=3D#00ffff>(</FONT>$typedef, $buffer<FONT color=3D#00ffff>);</FONT>
$time  -=3D <FONT color=3D#cdcd00>24</FONT> * <FONT =
color=3D#cdcd00>7</FONT> * <FONT color=3D#cdcd00>60</FONT> * <FONT =
color=3D#cdcd00>60</FONT><FONT color=3D#00ffff>;</FONT>         <FONT =
color=3D#bebebe># back-date a week
</FONT>$buffer =3D <FONT color=3D#98fb98>pack</FONT><FONT =
color=3D#00ffff>(</FONT>$typedef, $time, $line, $time<FONT =
color=3D#00ffff>);</FONT>

⌨️ 快捷键说明

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