#!/usr/bin/perl use Modern::Perl '2014'; use English; # make sure STD* uses UTF-8 use open IO => ':encoding(UTF-8)', ':std'; use FindBin; use lib $FindBin::Bin; use List::LimitedSize::Fitness; ### MAIN ### $OUTPUT_AUTOFLUSH = 1; my $num_words = 10; my $list = List::LimitedSize::Fitness->new($num_words, "flexible"); while(<>) { chomp; print "." unless $INPUT_LINE_NUMBER % 10000; $list->add($_, length $_); } say ""; foreach my $fitness (sort { $a <=> $b } $list->fitnesses()) { say "length $fitness"; say join "\n", map { s/_/ /g; "\t" . $_ } $list->items($fitness); } say $list->items() . " words total ($num_words requested).";