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

📄 directories.mht

📁 Perl 编程技巧大全。适合初学者阅读。
💻 MHT
📖 第 1 页 / 共 5 页
字号:

$dh =3D DirHandle-&gt;new<FONT color=3D#00ffff>(</FONT>$path<FONT =
color=3D#00ffff>)</FONT>   <FONT color=3D#98fb98>or</FONT> <FONT =
color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"Can't open $path : =
$!\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#cdad00>@files</FONT> =3D <FONT =
color=3D#ff7f50>grep</FONT> <FONT color=3D#00ffff>{</FONT> /\.<FONT =
color=3D#00ffff>[</FONT>ch<FONT color=3D#00ffff>]</FONT>$/i <FONT =
color=3D#00ffff>}</FONT> $dh-&gt;<FONT color=3D#98fb98>read</FONT><FONT =
color=3D#00ffff>();</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#98fb98>opendir</FONT><FONT =
color=3D#00ffff>(</FONT>DH, $dir<FONT color=3D#00ffff>)</FONT>        =
<FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"Couldn't open $dir for reading: $!"</FONT><FONT =
color=3D#00ffff>;</FONT>

<FONT color=3D#cdad00>@files</FONT> =3D <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>$file =3D =
<FONT color=3D#98fb98>readdir</FONT><FONT =
color=3D#00ffff>(</FONT>DH<FONT color=3D#00ffff>))</FONT> <FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>next</FONT> <FONT =
color=3D#ffa500>unless</FONT> /\.<FONT color=3D#00ffff>[</FONT>ch<FONT =
color=3D#00ffff>]</FONT>$/i<FONT color=3D#00ffff>;</FONT>

    <FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#9ac0cd>$filename</FONT> =3D <FONT =
color=3D#00cd00>"$dir/$file"</FONT><FONT color=3D#00ffff>;</FONT>
    <FONT color=3D#ff7f50>push</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdad00>@files</FONT>, $filename<FONT color=3D#00ffff>)</FONT> =
<FONT color=3D#ffa500>if</FONT> <FONT color=3D#b2dfee>-T</FONT> =
$file<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#cdad00>@dirs</FONT> =3D <FONT =
color=3D#ff7f50>map</FONT>  <FONT color=3D#00ffff>{</FONT> $_-&gt;<FONT =
color=3D#00ffff>[</FONT><FONT color=3D#cdcd00>1</FONT><FONT =
color=3D#00ffff>]</FONT> <FONT color=3D#00ffff>}</FONT>                =
<FONT color=3D#bebebe># extract pathnames
</FONT>        <FONT color=3D#ff7f50>sort</FONT> <FONT =
color=3D#00ffff>{</FONT> $a-&gt;<FONT color=3D#00ffff>[</FONT><FONT =
color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>]</FONT> &lt;=3D&gt; =
$b-&gt;<FONT color=3D#00ffff>[</FONT><FONT color=3D#cdcd00>0</FONT><FONT =
color=3D#00ffff>]</FONT> <FONT color=3D#00ffff>}</FONT>    <FONT =
color=3D#bebebe># sort names numeric
</FONT>        <FONT color=3D#ff7f50>grep</FONT> <FONT =
color=3D#00ffff>{</FONT> <FONT color=3D#b2dfee>-d</FONT> $_-&gt;<FONT =
color=3D#00ffff>[</FONT><FONT color=3D#cdcd00>1</FONT><FONT =
color=3D#00ffff>]</FONT> <FONT color=3D#00ffff>}</FONT>             =
<FONT color=3D#bebebe># path is a dir
</FONT>        <FONT color=3D#ff7f50>map</FONT>  <FONT =
color=3D#00ffff>{</FONT> <FONT color=3D#00ffff>[</FONT> $_, <FONT =
color=3D#00cd00>"$path/$_"</FONT> <FONT color=3D#00ffff>]</FONT> <FONT =
color=3D#00ffff>}</FONT>     <FONT color=3D#bebebe># form (name, path)
</FONT>        <FONT color=3D#ff7f50>grep</FONT> <FONT =
color=3D#00ffff>{</FONT> /^\d+$/ <FONT color=3D#00ffff>}</FONT>          =
      <FONT color=3D#bebebe># just numerics
</FONT>        <FONT color=3D#98fb98>readdir</FONT><FONT =
color=3D#00ffff>(</FONT>DIR<FONT color=3D#00ffff>);</FONT>               =
    <FONT color=3D#bebebe># all files
#-----------------------------
</FONT></PRE></FONT></TD></TR></TBODY></TABLE></DIV>
<DIV class=3DSECT2>
<H2 class=3DSECT2><A name=3DAEN516>Processing All Files in a Directory=20
Recursively</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>File::Find</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT =
color=3D#b2dfee>process_file</FONT> <FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#bebebe># do whatever;
</FONT><FONT color=3D#00ffff>}</FONT>
find<FONT color=3D#00ffff>(</FONT>\&amp;process_file, <FONT =
color=3D#cdad00>@DIRLIST</FONT><FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#cdad00>@ARGV</FONT> =3D <FONT =
color=3D#ff7f50>qw</FONT><FONT color=3D#00ffff>(</FONT>.<FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>File::Find</FONT><FONT color=3D#00ffff>;</FONT>
find <FONT color=3D#ffa500>sub</FONT> <FONT color=3D#00ffff>{</FONT> =
<FONT color=3D#ff7f50>print</FONT> $File::Find::name, <FONT =
color=3D#b2dfee>-d</FONT> &amp;&amp; <FONT color=3D#00cd00>'/'</FONT>, =
<FONT color=3D#00cd00>"\n"</FONT> <FONT color=3D#00ffff>}</FONT>, <FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>File::Find</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#cdad00>@ARGV</FONT> =3D <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#00cd00>'.'</FONT><FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$sum</FONT> =3D =
<FONT color=3D#cdcd00>0</FONT><FONT color=3D#00ffff>;</FONT>
find <FONT color=3D#ffa500>sub</FONT> <FONT color=3D#00ffff>{</FONT> =
$sum +=3D <FONT color=3D#b2dfee>-</FONT><FONT color=3D#ff7f50>s</FONT> =
<FONT color=3D#00ffff>}</FONT>, <FONT color=3D#cdad00>@ARGV</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"</FONT><FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00cd00> contains $sum =
bytes\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>File::Find</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#cdad00>@ARGV</FONT> =3D <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#00cd00>'.'</FONT><FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#9ac0cd>$saved_size</FONT>, <FONT =
color=3D#9ac0cd>$saved_name</FONT><FONT color=3D#00ffff>)</FONT> =3D =
<FONT color=3D#00ffff>(</FONT><FONT color=3D#cdcd00>-1</FONT>, <FONT =
color=3D#00cd00>''</FONT><FONT color=3D#00ffff>);</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>biggest</FONT> =
<FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>return</FONT> <FONT =
color=3D#ffa500>unless</FONT> <FONT color=3D#b2dfee>-f</FONT> &amp;&amp; =
<FONT color=3D#b2dfee>-</FONT><FONT color=3D#ff7f50>s</FONT> _ &gt; =
$saved_size<FONT color=3D#00ffff>;</FONT>
    $saved_size =3D <FONT color=3D#b2dfee>-</FONT><FONT =
color=3D#ff7f50>s</FONT> _<FONT color=3D#00ffff>;</FONT>
    $saved_name =3D $File::Find::name<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
find<FONT color=3D#00ffff>(</FONT>\&amp;biggest, <FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00ffff>);</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"Biggest file =
$saved_name in </FONT><FONT color=3D#cdad00>@ARGV</FONT><FONT =
color=3D#00cd00> is $saved_size bytes long.\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>File::Find</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#cdad00>@ARGV</FONT> =3D <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#00cd00>'.'</FONT><FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#9ac0cd>$age</FONT>, <FONT color=3D#9ac0cd>$name</FONT><FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>youngest</FONT> =
<FONT color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>return</FONT> <FONT color=3D#ffa500>if</FONT> =
<FONT color=3D#ff7f50>defined</FONT> $age &amp;&amp; $age &gt; <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#98fb98>stat</FONT><FONT =
color=3D#00ffff>(</FONT>$_<FONT color=3D#00ffff>))[</FONT><FONT =
color=3D#cdcd00>9</FONT><FONT color=3D#00ffff>];</FONT>
    $age =3D <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#98fb98>stat</FONT><FONT color=3D#00ffff>(</FONT>_<FONT =
color=3D#00ffff>))[</FONT><FONT color=3D#cdcd00>9</FONT><FONT =
color=3D#00ffff>];</FONT>
    $name =3D $File::Find::name<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
find<FONT color=3D#00ffff>(</FONT>\&amp;youngest, <FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00ffff>);</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"$name "</FONT> =
. <FONT color=3D#ff7f50>scalar</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#98fb98>localtime</FONT><FONT color=3D#00ffff>(</FONT>$age<FONT =
color=3D#00ffff>))</FONT> . <FONT color=3D#00cd00>"\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch09/fdirs">download =
the following standalone program</A></FONT>
#!/usr/bin/perl -lw
# fdirs - find all directories
</FONT><FONT color=3D#cdad00>@ARGV</FONT> =3D <FONT =
color=3D#ff7f50>qw</FONT><FONT color=3D#00ffff>(</FONT>.<FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>use</FONT> <FONT color=3D#b2dfee>File::Find</FONT> =
<FONT color=3D#00ffff>();</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>find</FONT><FONT =
color=3D#00ffff>(</FONT>&amp;@<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT> &amp;File::Find::find <FONT =
color=3D#00ffff>}</FONT>
*name =3D *File::Find::name<FONT color=3D#00ffff>;</FONT>
find <FONT color=3D#00ffff>{</FONT> <FONT color=3D#ff7f50>print</FONT> =
$name <FONT color=3D#ffa500>if</FONT> <FONT color=3D#b2dfee>-d</FONT> =
<FONT color=3D#00ffff>}</FONT> <FONT color=3D#cdad00>@ARGV</FONT><FONT =
color=3D#00ffff>;</FONT>

<FONT color=3D#bebebe>#-----------------------------
</FONT>find <FONT color=3D#ffa500>sub</FONT> <FONT =
color=3D#00ffff>{</FONT> <FONT color=3D#ff7f50>print</FONT> =
$File::Find::name <FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#b2dfee>-d</FONT> <FONT color=3D#00ffff>}</FONT>, <FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>find <FONT color=3D#00ffff>{</FONT> <FONT =
color=3D#ff7f50>print</FONT> $name <FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#b2dfee>-d</FONT> <FONT color=3D#00ffff>}</FONT> <FONT =
color=3D#cdad00>@ARGV</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=3DAEN519>Removing a Directory and Its =
Contents</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 size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch09/rmtree1">download =
the following standalone program</A></FONT>
#!/usr/bin/perl
# rmtree1 - remove whole directory trees like rm -r
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>File::Find</FONT> <FONT color=3D#ff7f50>qw</FONT><FONT =
color=3D#00ffff>(</FONT>finddepth<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"usage: $0 dir =
..\n"</FONT> <FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#cdad00>@ARGV</FONT><FONT color=3D#00ffff>;</FONT>
*name =3D *File::Find::name<FONT color=3D#00ffff>;</FONT>
finddepth \&amp;zap, <FONT color=3D#cdad00>@ARGV</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>zap</FONT> <FONT =
color=3D#00ffff>{</FONT>
    <FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT>!<FONT =
color=3D#b2dfee>-l</FONT> &amp;&amp; <FONT color=3D#b2dfee>-d</FONT> =
_<FONT color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
        <FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"rmdir =
$name\n"</FONT><FONT color=3D#00ffff>;</FONT>
        <FONT color=3D#98fb98>rmdir</FONT><FONT =
color=3D#00ffff>(</FONT>$name<FONT color=3D#00ffff>)</FONT>  <FONT =
color=3D#98fb98>or</FONT> <FONT color=3D#98fb98>warn</FONT> <FONT =
color=3D#00cd00>"couldn't rmdir $name: $!"</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>"unlink =
$name"</FONT><FONT color=3D#00ffff>;</FONT>
        <FONT color=3D#98fb98>unlink</FONT><FONT =
color=3D#00ffff>(</FONT>$name<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#98fb98>or</FONT> <FONT color=3D#98fb98>warn</FONT> <FONT =
color=3D#00cd00>"couldn't unlink $name: $!"</FONT><FONT =
color=3D#00ffff>;</FONT>
    <FONT color=3D#00ffff>}</FONT>
<FONT color=3D#00ffff>}</FONT>

<FONT color=3D#bebebe>#-----------------------------
# <FONT size=3D-1><A =
href=3D"http://pleac.sourceforge.net/include/perl/ch09/rmtree2">download =
the following standalone program</A></FONT>
#!/usr/bin/perl
# rmtree2 - remove whole directory trees like rm -r
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>File::Path</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"usage: $0 dir =

⌨️ 快捷键说明

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