sub build_hashes {
&sub_debug_info ( (caller(0))[3] );
## Generate a sorted list of disks
my @disks = sort keys %{$du{$mnt}{children}};
## Generate a sorted list of volumes
foreach my $disk (sort @disks) {
$vol_list{$disk_tree_map{$disk}} = 1;
}
## Use recursion to fill global hashes
&build_global_data (\%{$du{$mnt}});
print STDERR Dumper %du if $debug ;
foreach my $disk (keys %{$dir_user_hash{$mnt}}) {
my %thash = %{$du{$mnt}{$disk}};
foreach my $dir (keys %thash) {
my (@dirs) = File::Spec->splitdir( $dir );
my ($project) = @dirs;
# Create %dir_hash hash
# Create %user_dir_hash
foreach my $user (keys %{$thash{$dir}}) {
$dir_hash{$mnt}{$disk}{$dir}{size} += $thash{$dir}{$user}{size};
$dir_hash{$mnt}{$disk}{$dir}{files} += $thash{$dir}{$user}{files};
$dir_hash{$mnt}{$disk}{$dir}{age} = &min ($thash{$dir}{$user}{age}, $dir_hash{$mnt}{$disk}{$dir}{age});
$user_dir_hash{$mnt}{$disk}{$user}{$dir}{size} = $thash{$dir}{$user}{size};
}
## Sum du per project
if (@dirs == 1) {
foreach my $user (keys %{$thash{$dir}}) {
my $size = $thash{$dir}{$user}{size};
## Sum user total du
$user_total_usage{$user} = $size if !exists $user_total_usage{$user};
$user_total_usage{$user} += $size;
## Sum user disk usage
$user_disk_usage{$user}{$disk} = $size if !exists $user_disk_usage{$user}{$disk};
$user_disk_usage{$user}{$disk} += $size;
## Sum user project du
next unless $project =~ /[mt]\d{4}/;
$user_project_usage{$project}{$user} = 0 if !exists $user_project_usage{$project}{$user};
$user_project_usage{$project}{$user} = $user_project_usage{$project}{$user} + $size;
}
}
}
}
}