# file `perl -MFile::Find -e'$File::Find::dont_use_nlink = 1; find(sub + { lstat _ or print "$File::Find::name\n"; -l "" }, "/tmp")'` /tmp/opt: directory /tmp/hsperfdata_ammon: directory /tmp/.ICE-unix: sticky directory /tmp/xmmskde: directory /tmp/gpg-SRkPcN: directory /tmp/kde-root: directory /tmp/0165158219: directory /tmp/gconfd-root: directory /tmp/scrollkeeper-root: directory /tmp/hsperfdata_root: directory /tmp/gpg-ZV9kSX: directory /tmp/kde-steve: directory /tmp/ksocket-root: directory /tmp/gpg-h5tTLO: directory /tmp/1051437914: directory /tmp/gpg-I5lCsj: directory /tmp/.X11-unix: sticky directory /tmp/orbit-root: directory
(Of course, if your system equates lstat "" with lstat ".", you'll need to -l a non-existing file to clear _.)
In the above example, there are sub-trees below some of those directories listed, and they do have a valid stat cache. I don't know, off hand, if there are any links in /tmp at the moment, so I can't say how symlinks are handled.
I should note that this test is using File::Find version 1.07, which is a bit behind what's available on CPAN, but I don't recall the newer version behaving any different when I tested it.
At any rate, the custom module I wrote ended up being 50% faster than File::Find, when tested on the 30K file tree mentioned in the original post, and the same speed as File::Find on very small trees. Best of all, though? It does exactly what I need. :)
In reply to Re^4: Can the special underline filehandle (stat cache) be cleared? (when)
by ammon
in thread Can the special underline filehandle (stat cache) be cleared?
by ammon
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |