#!/usr/bin/perl
use strict;
use warnings;

my @messwerte = qw( 17 20 19 30 20 22 24 16 20 12 22 19 15 24 
                    22 20 18 20 22 25 13 29 19 28 24 27 26 25);
frequencies(\@messwerte);


sub frequencies # (\@werte}
  {
  my $werte = shift;              # Referenz auf das Wertearray
  my %haeuf  = ();                # Werte-Haeufigkeit
  my $sum    = 0;                 # Summe
  my $i      = 0;                 # Hilfsvariable
  
  my $count = scalar(@{$werte});  # Anzahl Werte
  my $min = ${$werte}[0];         # Minimum
  my $max = ${$werte}[0];         # Maximum
  # Haeufigkeiten aufsammeln, summieren, Extrema bestimmen
  for $i (@{$werte})
    {
    $haeuf{$i}++;
    $sum += $i;
    $min = $i if ($i < $min);
    $max = $i if ($i > $max);
    }

  print "Anzahl Zahlen:    $count\n";
  print "Summe der Zahlen: $sum\n";
  print "Kleinste Zahl:    $min\n";
  print "Groesste Zahl:    $max\n";
  print "\n";

  print "Häufigkeit der einzelnen Zahlen:\n";
  # Länge der gößten Zahl feststellen
  $i = length ($max) + 1;
  # Diagramm ausgeben
  for my $key (sort(keys %haeuf))
    {  print $key, ' ' x ($i - length $key),
             ': ', '*' x $haeuf{$key}, "\n";     }
  }