###########################################################################
###				Zadatak 10				###
### Ovde cemo demonstrirati kako uzeti adresu neke promenljive		###
### i obrnuto, kako od adrese dobiti bas skalar, listu ili hes		###
### koji se tamo nalazi.						###
###									###
### Ako je $a - skalar,	onda je \$a  adresa na kojoj je skalar $a	###
### Ako je $x - adresa na kojoj je skarar, onda je ${$x} taj skalar	###
### Ako je @a - lista, onda je \@a adresa na kojoj se nalazi lista @a	###
### Ako je $x - adresa na kojoj se nalazi lista, onda je ta lista @{$x}	###
### Ako je %a - hes, onda je \%a adresa na kojoj se nalazi hes %a	###
### Ako je $x - adresa na kojoj se nalazi hes, onda je taj hes %{$x}	###
###########################################################################
### Zadatak koji treba uraditi je sledeci				###
### Iz fajla 10_adrese.test treba ucitati username-ove i ispite koje 	###
### ti studenti slusaju. Zatim sa tastature se unosi username cije	###
### ispite zelimo da vidimo							###
###########################################################################

# Otvaranje datoteke za ulaz
open (ULAZ, "10_adrese.test") or die "Neuspesno citanje datoteke\n";

# Prazna mapa koja ce sadrzati za svakog studenta listu njegovih ispita
# Kako elementi mape ne mogu da budu liste, onda moramo da koristimo adrese listi
%studenti = ();

# Ucitavanje studenata i njihovih ispita
while(<ULAZ>) {
	if (/(m[rmnvli]\d{5})/) {
		$username = $1;
		# [] predstavlja adresu prazne liste
		$studenti{$username} = [];
		while(<ULAZ>) {
			last if (/^\s+$/);
			chomp;
			push(@{$studenti{$username}}, $_);
		}
	}
}

# Zatvaranje datoteke
close(ULAZ);


# Sa tastature ucitavamo username za koji nas interesuju ispiti
while (<STDIN>) {
	# ako je odgovarajuci format
	if (/(m[rvnlmi]\d{5})/) {
		# prolazimo kroz listu i stampamo njegove ispite
		foreach $ispit (@{$studenti{$1}}) {
			print "$ispit ";
		}
		print "\n";
	} 
}
