Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Recursion example (Directory sizing on the side)

by Beatnik (Parson)
on Jan 15, 2001 at 05:06 UTC ( [id://51836]=CUFP: print w/replies, xml ) Need Help??

Some recursion example I wrote some time again, it happens to return the directory size. There is probably more than one way to do it, this is just my way :)
#!/usr/bin/perl sub dodir { opendir(DIR,$_[0]); my $dir = $_[0]; if ($dir !~ /\/$/) { $dir .= "/"; } my @List=readdir(DIR); closedir(DIR); splice(@List,0,2); foreach $file (@List) { my $file = $dir.$file; if (-d $file) { dodir($file); } else { $totsize += (-s $file); } } } dodir($ARGV[0]); print "Reading $ARGV[0]\n"; print $totsize," bytes\n",($totsize/1024)," Kilobytes\n",($totsize/(10 +24*1024))," Megabytes\n";

Replies are listed 'Best First'.
Re: Recursion example (Directory sizing on the side)
by Fastolfe (Vicar) on Jan 15, 2001 at 08:52 UTC
    This is something File::Find can do pretty easily, as well:
    use File::Find; my $total_size = 0; find(sub { $total_size += -s }, @ARGV ? @ARGV : '.'); print "Total size: $total_size\n";

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (2)
As of 2024-04-25 20:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found