#!/usr/bin/perl -CSDA use Modern::Perl; use Data::Dump qw{dd}; use Path::Tiny; # read my @essay = path('./essay.txt')->lines_utf8({chomp => 1}); print "\n\n\nessay is: "; dd(\@essay); my %stats = ( Sort_alphabetically_ignoring_capitalization => [ sort { lc $a cmp lc $b } @essay ], #2. Sort alphabetically with upper case words just in front of lower case words with the same initial characters. # --- needs sophisticated algorithm to extract "same ininitial characters" first... # I don't code that #3. Sort by frequency, from high to low, (any order for equal frequency). # frequency of words or lines? if words then: Sort_by_fequency => do { # word count my %wc; $wc{$_}++ for # 3. and feed these words to "for" loop map { (split /\s+/, $_) } # 2. each line becomes stream of words @essay; # 1. lines from file # return array ref... (read from botton -- take words, sort comparing counts, # if counts are same then compare words, make pairs word -- word count [ map { [$_, $wc{$_}] } sort { $wc{$b} <=> $wc{$a} or $a cmp $b } keys %wc ]; }, #4. Sort by frequency, with alphabetical order for words with the same frequency. # same as above ); print "\n\n\nstats are: "; dd(\%stats); essay is: [ "Lorem ipsum dolor sit amet, eos ei nihil feugait, ius id sonet volumus molestiae, no nonumes vivendo nam. Mea diam", "putant te. Volumus euripidis instructior id pro, et accusata instructior quo. Et sed facete alienum, duo cu audire", "expetendis. Pro nibh nostrum efficiendi te.", "", "Unum viderer mnesarchum eos no, dico liberavisse ius eu, ad dicant aliquid partiendo sed. Mea no vivendo persecuti", "abhorreant. Enim possim mei ut, nibh noluisse delectus ei his. Atqui convenire vituperatoribus his at, ut meliore", "senserit usu. Idque verear latine mel id, everti latine et qui, in alia erat vix. Ex his accusata elaboraret, quem illud", "in eam.", "", ] stats are: { Sort_alphabetically_ignoring_capitalization => [ "", "", "abhorreant. Enim possim mei ut, nibh noluisse delectus ei his. Atqui convenire vituperatoribus his at, ut meliore", "expetendis. Pro nibh nostrum efficiendi te.", "in eam.", "Lorem ipsum dolor sit amet, eos ei nihil feugait, ius id sonet volumus molestiae, no nonumes vivendo nam. Mea diam", "putant te. Volumus euripidis instructior id pro, et accusata instructior quo. Et sed facete alienum, duo cu audire", "senserit usu. Idque verear latine mel id, everti latine et qui, in alia erat vix. Ex his accusata elaboraret, quem illud", "Unum viderer mnesarchum eos no, dico liberavisse ius eu, ad dicant aliquid partiendo sed. Mea no vivendo persecuti", ], Sort_by_fequency => [ ["Mea", 2], ["accusata", 2], ["ei", 2], ["eos", 2], ["et", 2], ["his", 2], ["id", 2], ["in", 2], ["instructior", 2], ["ius", 2], ["latine", 2], ["nibh", 2], ....... ["ut,", 1], ["verear", 1], ["viderer", 1], ["vituperatoribus", 1], ["vix.", 1], ["volumus", 1], ], }