I have a script that parses df into something that perl can use.
 1 #!/usr/bin/perl
 2 use strict;
 3 use warnings;
 4
 5 my @headers = qw(name size used free capacity mount);
 6 my @df = `df -k`;
 7 shift @df;  # get rid of the header
 8
 9 my %devices;
10 for my $line (@df) {
11     my %info;
12     @info{@headers} = split /\s+/, $line;  # note the hash slice
13     $info{capacity} = _percentage_to_decimal($info{capacity});
14     $devices{ $info{mount} } = \%info;
15 }
16
17 # Change 12.3% to .123
18 sub _percentage_to_decimal {
19     my $percentage = shift;
20     $percentage =~ s{%}{};
21     return $percentage / 100;
22 }
23 # Now the information for each device is in a hash of hashes.
24
25 # Show how much space is free in device /dev/ad4s1e
26 print $devices{"/production/log"}{free} ;
27 print "\n";
28 for my $info (values %devices) {
29     # Skip to the next device if its capacity is not over 60%.
30     next unless $info->{capacity} > .10;
31
32     # Print some info about each device
33     printf "%s is at %d%% with %dK remaining.\n",
34         $info->{mount}, $info->{capacity}*100, $info->{free};
35 }
However I keep getting these warnings.
Use of uninitialized value in substitution (s///) at ./get_df line 21.
Use of uninitialized value in division (/) at ./get_df line 22.
Use of uninitialized value in hash element at ./get_df line 15.
Use of uninitialized value in substitution (s///) at ./get_df line 21.
Use of uninitialized value in division (/) at ./get_df line 22.
Use of uninitialized value in hash element at ./get_df line 15.
Use of uninitialized value in substitution (s///) at ./get_df line 21.
Use of uninitialized value in division (/) at ./get_df line 22.
Use of uninitialized value in hash element at ./get_df line 15.
Use of uninitialized value in substitution (s///) at ./get_df line 21.
Use of uninitialized value in division (/) at ./get_df line 22.
Use of uninitialized value in hash element at ./get_df line 15.
Use of uninitialized value in substitution (s///) at ./get_df line 21.
Use of uninitialized value in division (/) at ./get_df line 22.
Use of uninitialized value in hash element at ./get_df line 15.
9006792
/production/log is at 70% with 9006792K remaining.
/ is at 37% with 17037532K remaining.
/production is at 11% with 13171728K remaining.
/export/home is at 24% with 11199904K remaining.
/production/archive is at 18% with 8095796K remaining.
/boot is at 28% with 68351K remaining.
UPDATE: I looked at the DF module on CPAN last night at home, but I would have to get sysadmin approval to get it installed. On the df the Filesystem is too long, so it gets printed to another line. This messed up the data dumper print out - some of the hash values get labeled undef.
casper@casperbox]:~/.wjohnson> df -k
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      28313732   9816924  17035356  37% /
/dev/sda1               101086     27516     68351  29% /boot
tmpfs                  2987896         0   2987896   0% /dev/shm
/dev/mapper/VolGroupPROD-ExportHome
                      15481840   3495504  11199904  24% /export/home
/dev/mapper/VolGroupPROD-Production
                      15481840   1523692  13171716  11% /production
/dev/mapper/VolGroupPROD-ProdLog
                      30963708  20410952   8979892  70% /production/log
/dev/mapper/VolGroupPROD-ProdArchive
                      10313016   1693640   8095500  18% /production/archive
[casper@casperbox]:~/.wjohnson>
[casper@casperbox]:~/.wjohnson>
[casper@casperbox]:~/.wjohnson>
[casper@casperbox]:~/.wjohnson>
[casper@casperbox]:~/.wjohnson> df -k | grep -v dev
Filesystem           1K-blocks      Used Available Use% Mounted on
                      28313732   9816924  17035356  37% /
                      15481840   3495504  11199904  24% /export/home
                      15481840   1523692  13171716  11% /production
                      30963708  20410952   8979892  70% /production/log
                      10313016   1693640   8095500  18% /production/archive
[casper@casperbox]:~/.wjohnson>
From Data::Dumper - many of the hash values are coming up as undefined. is there a way that I could predefine the values of the hash. I want to learn to get rid of them.
$VAR1 = {};
Use of uninitialized value in substitution (s///) at ./get_df.just_capacity line 24.
Use of uninitialized value in division (/) at ./get_df.just_capacity line 25.
Use of uninitialized value in hash element at ./get_df.just_capacity line 17.
$VAR1 = {
          '' => {
                  'free' => undef,
                  'mount' => undef,
                  'used' => undef,
                  'name' => '/dev/mapper/VolGroup00-LogVol00',
                  'capacity' => '0',
                  'size' => undef
            }
        };
$VAR1 = {};
$VAR1 = {
          '' => {
                  'free' => undef,
                  'mount' => undef,
                  'used' => undef,
                  'name' => '/dev/mapper/VolGroup00-LogVol00',
                  'capacity' => '0',
                  'size' => undef
                },
this is resolved by using df -k | grep -v var - but there has to be a better way. 
 
     
     
     
     
    