#!/opt/local/bin/perl
#script that pesters users who use up too much space in /home
use strict;
use warnings;
use Readonly;
local $\ = "\n";
#use POSIX 'strftime';
Readonly my $QUOTA => 2_000_000; #2G is reasonable, IMO (1k blocks)
Readonly my $HOME_DIR => '/fst/home';
my @HOM_USE_BY_DIR = `sudo dhog -o $HOME_DIR`;
die "Error: sudo dhog failed: $! status $? " if ($?);
#print @HOM_USE_BY_DIR;
my %HOM_USE_BY_DIR;
foreach my $i (@HOM_USE_BY_DIR) {
chomp $i;
#print $i;
if ( my ( $sp, $uid ) = $i =~ m{\s?(\d+)\s+/(?:\w+/)*(m\d[a-z]{3}\d{2})} ) {
my $KMG = 0;
while ( $sp > 1023 ) {
#print $sp;
$sp = $sp / 1024;
++$KMG;
}
my $mag_ind =
( $KMG == 0 ) ? 'K'
: ( $KMG == 1 ) ? 'M'
: ( $KMG == 2 ) ? 'G'
: 'some huge multiple of 1024';
$sp = "$sp $mag_ind";
print "$uid: $sp";
} ## end if ( my ( $sp, $uid ) = $i =~ m{\s?(\d+)\s+/(?:\w+/)*(m\d[a-z]{3}\d{2})} )
} ## end foreach my $i (@HOM_USE_BY_DIR)
####
my $KiB = <>; my @pref = qw(M G T P);my $i = 0; while($i<@pref){last if $KiB/1024 < 1; $KiB/=1024;$i++} print "$KiB$pref[$i]iB\n"
####
perl -ne'chomp(my $KiB =$_); my @pref = qw(K M G T P);my $i = 0; while($i<@pref){ last if $KiB/1024 < 1; $KiB/=1024;$i++} printf "${_}KiB = %.3f$pref[$i]iB\n",$KiB'
####
perl -lne
'my $KiB =$_;
my @pref = qw(K M G T P);
my $i = 0;
while($i<@pref){
last if $KiB/1024 < 1;
$KiB/=1024;
$i++
}
printf "${_}KiB = %.3f$pref[$i]iB\n ",$KiB'