Porównywanie 2 tabel w PERLU

0

Potrzebuję pomocy z porównaniem zawartości 2 tablic w Perlu.

Problem przedstawia się następująco:
Mam dwie tabele:
@linie - wiele wierszy, w każdy wierszu przedstawione są kolejne odpowiedzi poszczególnych studentów
@odp - jeden wiersz, klucz odpowiedzi

Muszę porównać każdy wiersz @linie z kluczem odpowiedzi i na końcu każdego wiersza wypisać liczbe poprawnych odpowiedzi.

Wiem jak przeglądać kolejne pozycje w @linie w kolejnych wierszach (foreach), jednak nie mam pojęcia jak porównać je z ODPOWIADAJĄCYMI im pozycjami w @odp.

Oto fragment mojego kodu:

foreach my $linia(@linie){
	my $ile = 0;
	print HTML '<tr>';
	my @dane = split ';', $linia;
	foreach my $d(@dane){
		print HTML "<td>$d</td>";
                #if(        ){
                #{++$ile;
	}
	
	print HTML "<td>$ile</td>";
	print HTML '</tr>';
} 

Byłbym wdzięczny gdyby ktoś mógł pomógł mi skonstruowac warunek if który każdą pozycję z @dane (jeden wiersz z @linie) porównuje z ODPOWIADAJĄCA jej pozycją w @odp.

0

Witam

W języku PERL brakuje funkcji strcmp ( funkcji porównywania dwóch łańcuchów ) ; można sobie poradzić w ten sposób, że porównywane łańcuchy zamieni się na ciągi liczb całkowitych ( ciągi zestawów bitów ), np. przy pomocy funkcji 'ord' lub 'vec' , a następnie te liczby porówna się ze sobą przy pomocy operatora XOR ; operator XOR w języku PERL :

http://docstore.mik.ua/orelly/perl4/prog/ch03_20.htm

http://docstore.mik.ua/orelly/perl/perlnut/ch04_05.htm

                                                                      Pozdrawiam

                                                                               JK
0

Dzieki za pomoc ale nie jestem pewien czy to rozwiązuje mój problem.

Bo jeśli mam:

@answers
D | B | A | C | C | B
@key
B | B | D | C | A | B

To nawet jeśli zamienię całe linie na ciągi liczbowe (ciągi bitów), to jak policzę ile pozycji w @answers pokrywa się z ODPOWIADAJĄCYMI pozycjami w @key.
W przykładzie powyżej pokrywają się np 3 odpowiedzi.

Może jakoś da się użyć wyrażeń regularnych i dopasowania do wzorca?

To cały mój kod:

 use strict vars;

open (INa, "answers.csv") or die ('Nie moge otworzyc pliku');
open (INk, "key.csv") or die ('Nie moge otworzyc pliku');
my $naglowki = <INa>;
my @linie = <INa>;
my $odpowiedzi = <INk>;
my @odp = split ';', $odpowiedzi;
close(INa);
close(INk);

open(HTML, ">strona.html");

print HTML '<html><body><table border="1"><tr>';
my @naglowki = split ';', $naglowki;
foreach my $nag(@naglowki){
	print HTML "<th>$nag</th>";
}
print HTML '<th>Punkty</th>';

foreach my $linia(@linie){
	my $ile = 0;
	print HTML '<tr>';
	my @dane = split ';', $linia;
	foreach my $d(@dane){
		print HTML "<td>$d</td>";
		#?????????????
	}
	
	print HTML "<td>$ile</td>";
	print HTML '</tr>';
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1