listing a directory by size

For the following program, found somethings seem not seen before, one is the input <*>, everything and anything? Another is the usage $i{$f} or $i{$b}, etc., not sure what that means? foreach $f (<*>) ( $i{$f} = -S $f }; foreach $k (sort{ $i{$b} <=> $i${a} } keys %i} { printf "%8d %s\n", $i{$k}, $k }