#!perl
# Noworoczne lamiglowki PERLowe
# ------------------------------------------------------------------
# Wywolanie
#           perl a.pl < INFILE > OUTFILE
# ------------------------------------------------------------------

use strict;

   my $pomin_nte = 5;                      # co ktore slowo pomijac

   my $separatory = '\\.,:;?=/\\\\\\+\\*'; # ignorowane znaki;
                                           # zalozylem ze znaki te
                                           # nie naleza do slow i je oddzielaja

# ------------------------------------------------------------------
# procedury do sortowania w Mazovii

sub  trannam   {
   my ( $n ) = @_;
   $n =~ tr/BCDEFGHIJKLMN₯O£PQRSTUVWXYZ ‘[\\]^_`abcdefghijklmn€o’pqrstuvwxyz¦§{|}~/BCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ‘’£€₯¦§/;
   return  $n;
   }
sub  cmpMaz   {
   &trannam($a) cmp &trannam($b);
   }

# ------------------------------------------------------------------

   my $cnter = $pomin_nte; # licznik
   my ( %slowka ) ;        # pomocnicza tablica asocjacyjna
   print "\\tekstglowny\n\n";
   while ( <> )  {
      s/[$separatory]/ /og;
      foreach my $el ( split "\\s+" )  {
         $slowka{$el} ++;
         if ( --$cnter < 1 ) {
            print "\\dziura{", length($el), '} ';
            $cnter = $pomin_nte;
            }
           else  {
            print "$el ";
            }
         }
      print "\n";
      }
   print "\n\\koniectekstu\n\n\\terazslowa\n";

   #                         teraz posortowana lista wszystkich slow
   my @slowa = sort cmpMaz keys %slowka;

   #                         wydruk liczby wystapien slow
   foreach my $el ( @slowa )  {
      print "$el - $slowka{$el}\n";
      }
   print "\n\\koniecslow\n";

# ------------------------------------------------------------------
# Przykladowy plik z danymi
#
# One tak ta€cz rock-and-rolla:
# Ola i Jola, Ol i Jol,
# Ola i Jola, Ol i Jol ...
