Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re: Using stat()

by sfink (Deacon)
on May 24, 2002 at 19:08 UTC ( #169188=note: print w/replies, xml ) Need Help??

in reply to Using stat() to get the total size of files in a folder

Module-free version. In brief:
perl -le '$size += (-f $_ ? -s _ : 0) for (<*>); print $size'
Unnecessarily cryptic, sorry. (-f $filename) checks whether something is a plain file, as opposed to a socket, directory, link, or some other weird beast. The above is in a for loop, so $_ is each filename coming out of <*>. (-s $filename) gives the size. Except that we've already called stat() on the file, so we don't want to take the time to do it again, which is what the magic underscore filehandle is good for.

Finally, <*> does a pattern match on the current directory. You may prefer to say glob("*").

Readable version:

my $size = 0; for my $filename (glob("*")) { next unless -f $filename; $size += -s _; }

Replies are listed 'Best First'.
Re^2: Using stat()
by Anonymous Monk on Nov 25, 2011 at 09:34 UTC
    If the input location is some other directory (not the current directory) then what to put inside glob ?
        For Windows it will be glob "C:/" ?
        my $size = 0; for my $filename (glob("C:/")) { next unless -f $filename; $size += -s _; }

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://169188]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (5)
As of 2022-05-20 23:42 GMT
Find Nodes?
    Voting Booth?
    Do you prefer to work remotely?

    Results (76 votes). Check out past polls.