# BEGIN { $/ = "\n"; $\ = "\n"; } # use feature 'current_sub', 'evalbytes', 'fc', 'postderef_qq', 'say', 'state', 'switch', 'unicode_strings', 'unicode_eval'; while (<>) { chomp $_; foreach $_ (/(\w+)/gu) { ++$total; ++$count{lc $_}; } END { say "${_}: $count{$_}" foreach (sort keys %count); say sprintf('%d distinct words in %d total', scalar keys %count, $total); say sprintf('%0.2f', scalar keys(%count) / $total); } }