📄 directories.mht
字号:
color=3D#cdcd00>11</FONT><FONT color=3D#00ffff>]</FONT> || <FONT =
color=3D#cdcd00>16384</FONT><FONT color=3D#00ffff>;</FONT> =
<FONT color=3D#bebebe># preferred block size?
</FONT><FONT color=3D#ffa500>while</FONT> <FONT =
color=3D#00ffff>(</FONT>$len =3D <FONT color=3D#98fb98>sysread</FONT> =
IN, $buf, $blksize<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT>!<FONT =
color=3D#ff7f50>defined</FONT> $len<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>next</FONT> <FONT =
color=3D#ffa500>if</FONT> $! =3D~ /^Interrupted/<FONT =
color=3D#00ffff>;</FONT> <FONT color=3D#bebebe># ^Z and fg
</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"System read error: $!\n"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
$offset =3D <FONT color=3D#cdcd00>0</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>while</FONT> <FONT =
color=3D#00ffff>(</FONT>$len<FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT> <FONT color=3D#bebebe># Handle partial =
writes.
</FONT> <FONT color=3D#ff7f50>defined</FONT><FONT =
color=3D#00ffff>(</FONT>$written =3D <FONT =
color=3D#98fb98>syswrite</FONT> OUT, $buf, $len, $offset<FONT =
color=3D#00ffff>)</FONT>
<FONT color=3D#98fb98>or</FONT> <FONT =
color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"System write error: =
$!\n"</FONT><FONT color=3D#00ffff>;</FONT>
$len -=3D $written<FONT color=3D#00ffff>;</FONT>
$offset +=3D $written<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>};</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#98fb98>close</FONT><FONT color=3D#00ffff>(</FONT>IN<FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#98fb98>close</FONT><FONT color=3D#00ffff>(</FONT>OUT<FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#98fb98>system</FONT><FONT =
color=3D#00ffff>(</FONT><FONT color=3D#00cd00>"cp $oldfile =
$newfile"</FONT><FONT color=3D#00ffff>);</FONT> <FONT =
color=3D#bebebe># unix
</FONT><FONT color=3D#98fb98>system</FONT><FONT =
color=3D#00ffff>(</FONT><FONT color=3D#00cd00>"copy $oldfile =
$newfile"</FONT><FONT color=3D#00ffff>);</FONT> <FONT =
color=3D#bebebe># dos, vms
#-----------------------------
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>File::Copy</FONT><FONT color=3D#00ffff>;</FONT>
copy<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"datafile.dat"</FONT>, <FONT =
color=3D#00cd00>"datafile.bak"</FONT><FONT color=3D#00ffff>)</FONT>
<FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"copy failed: $!"</FONT><FONT =
color=3D#00ffff>;</FONT>
move<FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"datafile.new"</FONT>, <FONT =
color=3D#00cd00>"datafile.dat"</FONT><FONT color=3D#00ffff>)</FONT>
<FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> =
<FONT color=3D#00cd00>"move 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=3DAEN507>Recognizing Two Names for the Same =
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#cdcd00>%seen</FONT> =3D <FONT =
color=3D#00ffff>();</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#ffa500>do</FONT>_<FONT =
color=3D#ffa500>my</FONT>_thing <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT =
color=3D#9ac0cd>$filename</FONT> =3D <FONT =
color=3D#ff7f50>shift</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#9ac0cd>$dev</FONT>, <FONT color=3D#9ac0cd>$ino</FONT><FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#98fb98>stat</FONT> =
$filename<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>unless</FONT> <FONT =
color=3D#00ffff>(</FONT><FONT color=3D#cdcd00>$seen</FONT><FONT =
color=3D#00ffff>{</FONT>$dev, $ino<FONT color=3D#00ffff>}</FONT>++<FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#bebebe># do something with $filename because we =
haven't
</FONT> <FONT color=3D#bebebe># seen it before
</FONT> <FONT color=3D#00ffff>}</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>foreach</FONT> <FONT =
color=3D#9ac0cd>$filename</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#cdad00>@files</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#00ffff>(</FONT>$dev, $ino<FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#98fb98>stat</FONT> =
$filename<FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>push</FONT><FONT color=3D#00ffff>(</FONT> =
@<FONT color=3D#00ffff>{</FONT> <FONT color=3D#cdcd00>$seen</FONT><FONT =
color=3D#00ffff>{</FONT>$dev,$ino<FONT color=3D#00ffff>}</FONT> <FONT =
color=3D#00ffff>}</FONT>, $filename<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#ffa500>foreach</FONT> <FONT =
color=3D#9ac0cd>$devino</FONT> <FONT color=3D#00ffff>(</FONT><FONT =
color=3D#ff7f50>sort</FONT> <FONT color=3D#ff7f50>keys</FONT> <FONT =
color=3D#cdcd00>%seen</FONT><FONT color=3D#00ffff>)</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#00ffff>(</FONT>$dev, $ino<FONT =
color=3D#00ffff>)</FONT> =3D <FONT color=3D#ff7f50>split</FONT><FONT =
color=3D#00ffff>(</FONT>/$<FONT color=3D#00ffff>;</FONT>/o, $devino<FONT =
color=3D#00ffff>);</FONT>
<FONT color=3D#ffa500>if</FONT> <FONT color=3D#00ffff>(</FONT>@<FONT =
color=3D#00ffff>{</FONT><FONT color=3D#cdcd00>$seen</FONT><FONT =
color=3D#00ffff>{</FONT>$devino<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># @{</FONT><FONT =
color=3D#cdcd00>$seen</FONT><FONT color=3D#bebebe>{$devino}} is a list =
of filenames for the same file
</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=3DAEN510>Processing All Files in a =
Directory</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>opendir</FONT><FONT =
color=3D#00ffff>(</FONT>DIR, $dirname<FONT color=3D#00ffff>)</FONT> =
<FONT color=3D#98fb98>or</FONT> <FONT color=3D#ffa500>die</FONT> <FONT =
color=3D#00cd00>"can't opendir $dirname: $!"</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>$file =3D =
<FONT color=3D#98fb98>readdir</FONT><FONT =
color=3D#00ffff>(</FONT>DIR<FONT color=3D#00ffff>)))</FONT> <FONT =
color=3D#00ffff>{</FONT>
<FONT color=3D#bebebe># do something with "$dirname/$file"
</FONT><FONT color=3D#00ffff>}</FONT>
<FONT color=3D#98fb98>closedir</FONT><FONT =
color=3D#00ffff>(</FONT>DIR<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT>$dir =3D <FONT color=3D#00cd00>"/usr/local/bin"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT color=3D#00cd00>"Text files in =
$dir are:\n"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#98fb98>opendir</FONT><FONT color=3D#00ffff>(</FONT>BIN, =
$dir<FONT color=3D#00ffff>)</FONT> <FONT color=3D#98fb98>or</FONT> <FONT =
color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"Can't open $dir: =
$!"</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>$file =3D =
<FONT color=3D#98fb98>readdir</FONT> BIN<FONT color=3D#00ffff>)</FONT> =
<FONT color=3D#00ffff>)</FONT> <FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ff7f50>print</FONT> <FONT =
color=3D#00cd00>"$file\n"</FONT> <FONT color=3D#ffa500>if</FONT> <FONT =
color=3D#b2dfee>-T</FONT> <FONT color=3D#00cd00>"$dir/$file"</FONT><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#00ffff>}</FONT>
<FONT color=3D#98fb98>closedir</FONT><FONT =
color=3D#00ffff>(</FONT>BIN<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</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> BIN<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>if</FONT> =
$file =3D~ /^\.\.?$/<FONT color=3D#00ffff>;</FONT> <FONT =
color=3D#bebebe># skip . and ..
</FONT> <FONT color=3D#bebebe># ...
</FONT><FONT color=3D#00ffff>}</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>DirHandle</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>sub</FONT> <FONT color=3D#b2dfee>plainfiles</FONT> =
<FONT color=3D#00ffff>{</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$dir</FONT> =3D =
<FONT color=3D#ff7f50>shift</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>my</FONT> <FONT color=3D#9ac0cd>$dh</FONT> =3D =
DirHandle->new<FONT color=3D#00ffff>(</FONT>$dir<FONT =
color=3D#00ffff>)</FONT> <FONT color=3D#98fb98>or</FONT> <FONT =
color=3D#ffa500>die</FONT> <FONT color=3D#00cd00>"can't opendir $dir: =
$!"</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#ffa500>return</FONT> <FONT color=3D#ff7f50>sort</FONT> =
<FONT color=3D#bebebe># sort pathnames
</FONT> <FONT color=3D#ff7f50>grep</FONT> <FONT =
color=3D#00ffff>{</FONT> <FONT color=3D#b2dfee>-f</FONT> <FONT =
color=3D#00ffff>}</FONT> <FONT color=3D#bebebe># choose only =
"plain" files
</FONT> <FONT color=3D#ff7f50>map</FONT> <FONT =
color=3D#00ffff>{</FONT> <FONT color=3D#00cd00>"$dir/$_"</FONT> <FONT =
color=3D#00ffff>}</FONT> <FONT color=3D#bebebe># create full paths
</FONT> <FONT color=3D#ff7f50>grep</FONT> <FONT =
color=3D#00ffff>{</FONT> !/^\./ <FONT color=3D#00ffff>}</FONT> =
<FONT color=3D#bebebe># filter out dot files
</FONT> $dh->
<FONT color=3D#98fb98>read</FONT><FONT color=3D#00ffff>()</FONT>
<FONT color=3D#00ffff>;</FONT> <FONT color=3D#bebebe># read =
all entries
</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=3DAEN513>Globbing, or Getting a List of =
Filenames Matching=20
a Pattern</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#cdad00>@list</FONT> =3D <*.c><FONT =
color=3D#00ffff>;</FONT>
<FONT color=3D#cdad00>@list</FONT> =3D <FONT =
color=3D#98fb98>glob</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"*.c"</FONT><FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#98fb98>opendir</FONT><FONT =
color=3D#00ffff>(</FONT>DIR, $path<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#cdad00>@files</FONT> =3D <FONT =
color=3D#ff7f50>grep</FONT> <FONT color=3D#00ffff>{</FONT> /\.c$/ <FONT =
color=3D#00ffff>}</FONT> <FONT color=3D#98fb98>readdir</FONT><FONT =
color=3D#00ffff>(</FONT>DIR<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#98fb98>closedir</FONT><FONT =
color=3D#00ffff>(</FONT>DIR<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>File::KGlob</FONT><FONT color=3D#00ffff>;</FONT>
<FONT color=3D#cdad00>@files</FONT> =3D <FONT =
color=3D#98fb98>glob</FONT><FONT color=3D#00ffff>(</FONT><FONT =
color=3D#00cd00>"*.c"</FONT><FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</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> <FONT color=3D#98fb98>readdir</FONT><FONT =
color=3D#00ffff>(</FONT>DH<FONT color=3D#00ffff>);</FONT>
<FONT color=3D#bebebe>#-----------------------------
</FONT><FONT color=3D#ffa500>use</FONT> <FONT =
color=3D#b2dfee>DirHandle</FONT><FONT color=3D#00ffff>;</FONT>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -