###########################################################################
###				Zadatak 4				###
###  Datoteka rezultati.txt sadrzi rezultate sa kolokvijuma, u obliku:	###
###  mr06123     25    24    24    15					###
###  Na osnovu nje, napraviti novu rezultati1.txt, u obliku:		###
###  Petar Petrovic   88						###
###  koja je sortirana po bodovima					###
###########################################################################


# Otvaranje datoteke za citanje
open (DATOTEKA, "rezultati.txt") or die "Nemoguce otvaranje datoteke sa rezultatima.\n";

# Mapa u kojoj cuvamo rezultate
%kol = ();

# Citamo liniju po liniju
while ($linija = <DATOTEKA>) {
	if ($linija =~ /(m[rvnmil]\d{5})\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/) {
		$kol{index_u_ime($1)} = $2+$3+$4+$5;
	} 
}

# Zatvaramo datoteku
close (DATOTEKA);


# Sortiramo ih po ucinku na kolokvijumu
@imena = keys(%kol);
@imena =  reverse sort { $kol{$a} <=> $kol{$b} } @imena;

# Otvaramo datoteku za konacne rezultate
open (DATOTEKA1, ">rezultati1.txt") or die "Neuspesno otvaranje datoteke za pisanje.\n";

# Upisujemo u datteku
foreach (@imena) {
	print DATOTEKA1 "$_ - $kol{$_}\n";
}


# Zatvaramo datoteku
close (DATOTEKA1);


sub index_u_ime {

	# Uzimamo argument fje
	my $username = shift;

	# Otvaramo datoteku iz koje citamo izlaz iz programa finger
	open (DAT, "finger $username |") or die "Neuspesno otvaranje.\n";

	# Citamo liniju iz koje izvlacimo ime i prezime
	my $linija = <DAT>;
	if ($linija =~ /Name: (\w+\s\w+)/) {
		return "$1";
	}
	return "Nepoznat";
}
