FIND(3) USER COMMANDS FIND(3) NAME find - ファイルトリーのトラバースする SYNOPSYS use File::Find; find(\&wanted, '/foo','/bar'); sub wanted { ... } DESCRIPTION 関数 wanted() では、何でも自由に確認を行うことができます。 このとき $dir には、現在のディレクトリ名が、$_ には、そのデ ィレクトリ内の現在のファイル名が入っています。 また、$name は "$dir/$_" を表わします。 この関数が呼ばれたときには、 $dir へ chdir() しています。 この関数で $prune を設定すると、 トリーの枝刈りができ、その枝の以降の検索を行ないません。 このライブラリは、もともと find2perl ツールのためのもので、 find2perl / -name .nfs\* -mtime +7 \ -exec rm -f {} \; -o -fstype nfs -prune とすると、 sub wanted { /^\.nfs.*$/ && (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) && int(-M _) > 7 && unlink($_) || ($nlink || (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_))) && $dev < 0 && ($prune = 1); } のような出力が得られます。 AFS を使っているときには、AFS にごまかされないように、変数 $dont_use_nlink を設定してください。 もう一つ、おもしろい wanted 関数を示します。 これは、実体の 無いすべてのシンボリックリンクを探し出すものです: sub wanted { -l && !-e && print "bogus link: $name\n"; } Perl module manpages Last change: Release 5.0 Patchlevel 00 1