#! /usr/local/bin/perl # %DirCount = (); %ModCount = (); foreach $f ( @ARGV ) { die "Not an .lhs file: $f\n" if $f !~ /\.lhs$/; $f =~ s/\.lhs$/.o/; $f_size = `size $f`; die "Size failed?\n" if $? != 0; if ( $f_size =~ /(\S+)\s*(\S+)\s*(\S+)\s*(\d+)\s*(\S+)/ ) { $totsz = $4; if ( $f =~ /(.*)\/(.*)/ ) { local($dir) = $1; local($mod) = $2; $DirCount{$dir} += $totsz; $ModCount{$mod} += $totsz; } else { print STDERR "not counted in a directory: $f\n"; $ModCount{$f} += $totsz; } } else { die "Can't figure out size: $f_size\n"; } } # print the info $tot = 0; foreach $d (sort (keys %DirCount)) { printf "%-20s %6d\n", $d, $DirCount{$d}; $tot += $DirCount{$d}; } printf "\n%-20s %6d\n\n\n", 'TOTAL:', $tot; $tot = 0; foreach $m (sort (keys %ModCount)) { printf "%-20s %6d\n", $m, $ModCount{$m}; $tot += $ModCount{$m}; } printf "\n%-20s %6d\n", 'TOTAL:', $tot;