ich habe mich jetzt ein bissel in Perl/CGI eingearbeitet und habe nun die Aufgabe, einen Multiple-Choice-Online-Test zu erstellen und auszuwerten. Um das Script nicht allzu lang werden zu lassen, wollte ich gern mit Schleifen arbeiten.
Die jeweils 4 Antworten auf eine Frage sollen in zufälliger Reihenfolge angezeigt werden.
Die Schleife dazu sieht folgendermaßen aus (sicher gibt es wesentlich elegantere Lösungen, aber wie gesagt - ich bin noch beim Lernen und außerdem jederzeit für Vorschläge offen ... ):
- Code: Select all
my $Zufall1=int(rand(4));
my $Zufall2=int(rand(4));
while ($Zufall2 == $Zufall1) { $Zufall2=int(rand(4)); }
my $Zufall3=int(rand(4));
while ($Zufall3 == $Zufall2 or $Zufall3 == $Zufall1) { $Zufall3=int(rand(4)); }
my $Zufall4=int(rand(4));
while ($Zufall4 == $Zufall3 or $Zufall4 == $Zufall2 or $Zufall4 == $Zufall1) { $Zufall4=int(rand(4)); }
for(my $i = 1; $i <= 7; $i++)
{
my $A="\$Antw".$i."\[\$Zufall1]";
print"<tr> <td> <b>$i. $Fragen[$i-1] </b> </td> </tr>";
print"<tr> <td> <input type=radio name=f_antw1 value=\"A\">$A</br></td> </tr>";
print"<tr> <td> <input type=radio name=f_antw1 value=\"A\">$A</br></td> </tr>";
print"<tr> <td> <input type=radio name=f_antw1 value=\"A\">$A</br></td> </tr>";
print"<tr> <td> <input type=radio name=f_antw1 value=\"A\">$A</br></td> </tr>";
print"<tr> <td> </td> </tr>";
}
@Fragen und @Antw1 (...7 - für momentan 7 Fragen) sind Arrays, die ich weiter oben definiert habe.
Die Zeile
- Code: Select all
my $A="\$Antw".$i."\[\$Zufall1]";
Ich hab schon an der Syntax rumgebastelt und verschiedene Varianten durchprobiert, aber immer Fehlermeldungen oder falsche Ausgaben erhalten.
Kann mir jemand helfen??
Viele Grüße
Steffi