#!/usr/bin/perl

use strict;
use warnings;
use List::Util;

# wyniki maksymalne z kolokwiow
my @maxy = (5,6,5,5);

# tabela z danymi nt. osiagniec studentow
# kazdy element tablicy @dane, to skalar zawierajacy referencje do tablicy
# anonimowej, ktora zawiera napis a potem ciag liczb
my @dane = (
  ["Agnieszka L."    ,5,5,5,2,],
  ["Anna S."       ,5,5,5,3,],
  ["Damian K."     ,5,0,5,1,],
  ["Dariusz G."      ,5,4,5,2,],
  ["Dawid K."        ,5,3,5,3,],
  ["Grzegorz T."   ,5,2,5,3,],
  ["Karol R."        ,5,2,4,0,],
  ["Lukasz K."     ,2,4,5,2,],
  ["Lukasz L."     ,4,5,5,3,],
  ["Marek K."        ,5,3,3,3,],
  ["Piotr J."        ,5,4,4,3,],
  ["Piotr T."        ,5,5,3,0,],
  ["Przemyslaw S." ,5,3,4,1,],
  ["Radoslaw G."   ,5,4,4,0,],
  ["Rafal D."        ,5,4,4,2,],
  ["Slawomir P."   ,5,4,5,0,],
  ["Tomasz D."     ,5,2,3,2,],
  ["Tomasz M."     ,3,3,4,0,],
);

# obliczenie calkowitej maksymalnej liczby punktow mozliwej
# do uzyskania ze wszystkich kolokwiow:
my $max = List::Util::sum @maxy;

# teraz przetwarzanie danych, czyli wypisywanie kazdego
# imienia i nazwiska oraz za nim jego osiagniec srednich

foreach my $student ( @dane ){
  # lecimy po wszystkich podtablicach w tablicy @dane
  # kazda taka podtablica trzymana jest w tymczasowej zmiennej
  # skalarnej '$student' jako referencja

  # wypisujemy nazwisko z jednoczesnym usunieciem z tablicy danej
  # przez @$student (pelen zapis to @{$student})
  printf "%13s:  ",shift @$student;

  # sumujemy elementy w tablicy danej przez @$student, dzielimy przez
  # wartosc $max (obliczona powyzej) i mnozymy przez 100 zeby wyszlo
  # jak nalezy w procentach, a potem wypisujemy
  printf "%1.2f%%\n", 100 * List::Util::sum(@$student) / $max;

}

# i to wszystko.

__END__

+--- 72 wierszy: =pod-----------------------------------------------------------------------------