http://qs1969.pair.com?node_id=40238


in reply to direcotories and spaced used

Is there any reason you guys decided not to use the File::Find module?

Proof of concept:

#!/usr/bin/perl -w use strict; use File::Find; @ARGV = ('.') unless @ARGV; my $sum = 0; find sub { $sum += -s }, @ARGV; print "@ARGV contains $sum bytes\n";

This will sum up the arguments and will print them back to you.

I don't know if merlyn is still around, but he used to go nuts when people did recursive stuff like this.

J. J. Horner
Linux, Perl, Apache, Stronghold, Unix
jhorner@knoxlug.org http://www.knoxlug.org/

Replies are listed 'Best First'.
(tye)Re: direcotories and spaced used
by tye (Sage) on Nov 07, 2000 at 04:00 UTC

    ...because that would be a pain. Programming via call-backs sucks. Now, if File::Find were to be totally rewritten instead of just being heavilly patched with lots of backward compatability, then there'd probably be an OO or other non-callback interface and I'd be less likely to roll my own replacement (I'd like to do this rewrite when I get more free time).

    Plus, File::Find out of the box fails on most systems I work on because the silly "count number of links to determine how many subdirectories" bad hack has remained long past its usefulness. So rolling my own works better than using File::Find. Now, this particular reroll has the common mistake of not detecting symbolic links to directories. I personally don't have any symbolic links to directories to worry about so this is not a problem for me but it would be good to fix this.

    One way to fix that would be to use File::Find, but I don't consider that the best way. File::Find's job just isn't tricky enough that you can't roll your own that is even better with a very small bit of work. Now, the symbolic link problem is found in almost all first versions of rewrites of File::Find. And before that, the problem of having to either prepend the directory-path-so-far or chdir() is found because otherwise the rewrite just doesn't work. So watch out for those at least.

            - tye (but my friends call me "Tye")
RE: begging forgiveness for Re: directories and spaced used
by Albannach (Monsignor) on Nov 07, 2000 at 01:03 UTC
    Of course you're right, I'm just hoping that he doesn't decide to review all old posts when he comes back from his trip ;-).

    I think it all stems from the fact that there were no such thing as modules when I started with Perl (or at least not that I was aware of), and I took a lot of years off Perl (sounds of gasps from the shocked crowd) doing other assorted stuff until about a month ago...

    Albannach locks himself in his cell without his dinner and chants "use the modules" some more...