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 } #### 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. #### 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> #### $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 },