http://www.perlmonks.org?node_id=776231


in reply to Re^4: Golf: Improve this guy's fail . . . please!
in thread Golf: Improve this guy's fail . . . please!

But... but... it's golf! ;-)

I guess adding a feature's not exactly in the spirit of golf, though. More golfed:

++$t,++$c{$_}for map/\w/g,<>; print$_,' ',$c{$_},' ',$c{$_}/$t*100,$/for sort keys%c; print"Total: $t\n"

So now that that's out of the way, how about still short but somewhat easier to read?

++$t, ++$c{$_} for map /\w/g, <>; for ( sort keys %c ) { $p = sprintf '%3.2f', $c{$_} / $t * 100; printf "%-5s%5d%7s%%\n", $_, $c{$_}, $p; } print 'Distinct: ' . (scalar keys %c) . "\tTotal: $t\n"