Skalar im Skalar deklarieren??

Alles, was Perl betrifft, kann hier besprochen werden.

Skalar im Skalar deklarieren??

Postby Dummie » 14. January 2005 10:59

Hallo ihr alle,

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> &nbsp; </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]";
soll also im ersten Schleifendurchlauf den Skalar $Antw1[$Zufall1] erzeugen, was sie auch macht - aber leider wird nicht der entsprechende Eintrag des Antw1-Arrays eingesetzt, sondern es wird "$Antw1[$Zufall1]" ausgegeben!!!
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
Dummie
 
Posts: 24
Joined: 14. December 2004 10:11
Location: bei Naumburg

Postby HutziBlitzi » 25. January 2005 19:38

hallo,

wenn mich nicht alles täuscht, dann versuchs doch mal mit folgender zeile

my $A=${"Antw$i"}[$Zufall1];

ich habs nicht getestet, sollte aber klappen[/list][/code]
HutziBlitzi
 
Posts: 4
Joined: 25. January 2005 18:44
Location: Buseck


Return to Perl

Who is online

Users browsing this forum: No registered users and 4 guests