This code make %albero with the paths as keys and directory or file as values(is unnecessary to recurse the directory).use DirHandle; use Cwd; use File::stat; $strarting_dir = cwd; &creaalbero($strarting_dir); &alkilo($dimensione); print $dimensione; sub creaalbero { chdir $_; $cwd = cwd; $percorso = "$cwd"."\\"; $dh = new DirHandle; $dh->open("$_"); @lista = ($dh->read()); shift @lista; shift @lista; foreach $dir (<*>) { if (-d $dir) { chdir $dir; &creaalbero(); $albero{"$percorso"} = directory; chdir".."; } if (-f $dir) { $current = cwd; $albero{"$current"."\\"."$dir"} = file; $stat = stat ($dir); $dimensione += $stat->size; } } } sub alkilo { $dimensione = $dimensione / 1024; @grand = qw/Tb Gb Mb Kb /; if ( $dimensione >= 1024 ) { pop @grand ; &alkilo($dimensione) } unless ( $dimensione == 0 ) { $molt = pop @grand } $dimensione =~ /^\d*\.\d?\d?/; $dimensione = "$&" . " " . "$molt"; }
NOTE: creaalbero means maketree and percorso means path.foreach $dir(<*>)
seeU L*
In reply to Re: How do I recursively process files through directories
by Discipulus
in thread How do I recursively process files through directories
by paco
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |