use strict; use warnings; use List::Util qw(reduce); use File::Slurp qw(read_file); sub word_count { reduce { $a->{$b}++; $a } {}, map { split(/\W+/) } map { lc read_file $_ } @_; }