hallo alle zusammen,
ich bins mal wieder!
vielleicht könnt ihr mir ja erklären warum diese schleife nicht das macht was sie soll:
BEGINN PROG:
read (STDIN, $auswahl, $ENV{'CONTENT_LENGTH'});
%auswahl = &CGIDA ($auswahl);
while (($temp2, $temp1) = each %auswahl)
{
if ($temp1 =~m/\d{2}.\d{2}.\d{2}/g)
{
$temp = $temp1;
}
else
{
die "Kein Datum eingegeben"
}
}
END PROG:
also ich lese einen string aus einem formular ein, lassen ihn durch eine subroutine laufen die mir das &Zeichen trennt (feld von daten trennen!) und geb ihn als hash zurück.
in temp2 steht der feldname in temp1 der feldinhalt (soll ein Datum werden!).
nun lasse ich das datum mit einem suchmuster auf sein format prüfen.
IF das suchmuster wahr zurück liefert soll er temp1 zu temp machen. (muss ich das überhaupt so umständlich lösen???)
ELSE soll er das programm sterben lassen.
nun zu meinen prüfschritten:
als erstes hab ich mal statt der die anweisung eine variable mit text gehabt "Kein Datum eigegeben blabla"
als test lass ich mir die variblen auf einer html seite ausgeben.
folgende ergebnisse:
$temp liefert tatsächlich das Datum wenn ich Ziffern eingebe.
(nur mit dem {2} kommt er nicht klar als ich einmal 4 stelliges jahr eingegeben habe kam das datum auch raus. allerdings laesst er keine Buchstaben zu dann ist $temp leer)
$temp1 ist leer (ähm wie kann dann $temp das datum zurück liefern? eins der mysterien die ich nicht verstehe)
$err die variable die ich vor dem die befehl benutzt habe wurde jedesmal mit ausgegeben ob if nun wahr war oder nicht. demnach bricht das prog jetzt auch an dieser stelle ab. und wie kann er sowohl $temp (also if=wahr) als auch $err (also if=unwahr)ausgeben.
vielleicht hab ich ja noch nicht die grundlegende funktion einer solchen schleife kapiert!!!!
bitte klärt mich auf(über die schleifen meine ich)
THX im vorraus euer newbie;-)