Zahlen als Name einer Variable
juha
- perl
Hallo Zusammen
Bei einer übergabe via HTML bekomme ich die Variable $in{zahl} (z.B.$in{01}, diese Zahl kann ich später mit einer Berechnung herausfinden und sie steht dann z.B. in $ergebnis,
nun möchte ich dies mit $in{$ergebnis} ausgeben, ist dies möglich?
grüsse juha
Hi,
Bei einer übergabe via HTML bekomme ich die Variable $in{zahl}
ei! Hast Du etwa eine dubiose GetQuery-Routine in Deinem Code stehen? Du solltest _unbedingt_ auf CGI.pm umsteigen! Vergleiche
perldoc CGI
(z.B.$in{01},
Ich vermute, dass nicht $in{01}, sondern $in{'01'} (beachte die Quotes!) gefüllt wurde. Wenn Du 01 schreibst, interpretiert Perl das als oktale Zahl und sucht anschließend $in{'1'}.
nun möchte ich dies mit $in{$ergebnis} ausgeben, ist dies möglich?
Hast Du's mal probiert?
Cheatah
Ich vermute, dass nicht $in{01}, sondern $in{'01'} (beachte die Quotes!) gefüllt wurde. Wenn Du 01 schreibst, interpretiert Perl das als oktale Zahl und sucht anschließend $in{'1'}.
$anfang = "a"; //dieses a fügte ich erst jetzt hinzu, wegen den ''
$eintrag = $anfang.$daycount.$maxrow;
#Name des Print bestimmen, damit man die Ausgabezeiten später unterscheiden kann
print "<td><input type='text' name='$eintrag' value='$hash_eintraege->{ajbatch_zeit}' size='10'></td>";
nun möchte ich dies mit $in{$ergebnis} ausgeben, ist dies möglich?
$anfang = "a";
$eingabe = $anfang.$tag.$zaehler;
print $eingabe; // es kommt die richtige Zahl!!
print $in{'$eingabe'};
Hast Du's mal probiert?
Ja, aber etwas funktioniert nicht und darum frage ich ja...
Cheatah
Grüsse
Juha
Hi,
$anfang = "a"; //dieses a fügte ich erst jetzt hinzu, wegen den ''
$eintrag = $anfang.$daycount.$maxrow;
wenn z.B. $daycount == 7 und $maxrow == 3 ist, hast Du danach $eintrag eq 'a73'.
print $in{'$eingabe'};
In Singlequotes werden keine Variablen expandiert, d.h. hier wird das Hash-Element namens der _Zeichenkette_ '$'.'e'.'i'.'n'.'t'.'r'.'a'.'g' gesucht. Lass die Quotes weg.
Ja, aber etwas funktioniert nicht und darum frage ich ja...
"Funktioniert nicht" funktioniert nicht. Da gehört immer noch eine Fehlerbeschreibung (inkl. Analyse) zu.
Cheatah
Hi,
$anfang = "a"; //dieses a fügte ich erst jetzt hinzu, wegen den ''
$eintrag = $anfang.$daycount.$maxrow;
wenn z.B. $daycount == 7 und $maxrow == 3 ist, hast Du danach $eintrag eq 'a73'.
print $in{'$eingabe'};
In Singlequotes werden keine Variablen expandiert, d.h. hier wird das Hash-Element namens der _Zeichenkette_ '$'.'e'.'i'.'n'.'t'.'r'.'a'.'g' gesucht. Lass die Quotes weg.
Was soll ich hier jetzt genau weglassen?
"Funktioniert nicht" funktioniert nicht. Da gehört immer noch eine Fehlerbeschreibung (inkl. Analyse) zu.
Es kommt keine Fehlermeldung, in $in{$eingabe} steht nichts, diese Variable ist leer. und in $eingabe steht genau die zahl welche ich möchte.
z.B $eingabe = 23
folglich:
$in{23} == $in{$eingabe}
stimmt doch?
juha
Hi,
print $in{'$eingabe'};
In Singlequotes werden keine Variablen expandiert, [...]
Was soll ich hier jetzt genau weglassen?
die Quotes. Das sind Anführungszeichen.
Es kommt keine Fehlermeldung, in $in{$eingabe} steht nichts,
In $in{$eingabe}, oder in $in{'$eingabe'}?
$in{23} == $in{$eingabe}
Hashkeys solltest Du als String ansehen, nicht als Zahl. Ergo:
$in{'23'} == $in{$eingabe}
Dass Du statt '==' vermutlich 'eq' meinst, sei hier nur nebenbei erwähnt :-)
Cheatah
Hallo
[...]
print $in{'$eingabe'};
[...]
z.B $eingabe = 23
folglich:
$in{23} == $in{$eingabe}
stimmt doch?
Ja! Aber warum schreibst Du es dann nicht auch so wie unten, sondern wie ganz oben? ;)
perldoc -q quoting
Gruß Alex
--
http://www.google.de/search?hl=de&safe=off&q=Rechtschreibung+Standart
Hallo
»»»» Ja! Aber warum schreibst Du es dann nicht auch so wie unten, sondern wie ganz oben? ;)
Das war wohl ein Tippfehler hier im Selfhtml! ;-)
$eintrag = $daycount.$maxrow;
#Name des Print bestimmen, damit man die Ausgabezeiten später unterscheiden kann
print "<td><input type='text' name='$eintrag' value='$hash_eintraege->{ajbatch_zeit}' size='10'></td>";
Dies ist die erste Ausgabe
Mit folgendem Button wird es weiter geleitet...
print "<form>";
print "<body>";
print "<html>";
print "<p align='right'><input type='submit' value='Speichern' onClick='self.location.href='/cgi-bin/batch/zeiterfassung.cgi''></p>";
print "<input type='hidden' name='batchangabe' value='aenderungspeichern'>";
print "<input type='hidden' name='persid' value='$personen_id'>";
print "</form>";
print "</body>";
print "</html>";
Und an der betroffenen stelle wird..
$eingabe = $daycount.$maxrow;
print $in{'$eingabe'};
das statt finden, das dritte wird nicht ausgeführt!!
Übergebe ich etwas falsch?
ich raste langsam aus ;-(
cu juha
Hallo
[...]
print $in{'$eingabe'};
Du machst es ja schon wieder! ;) Zwischen Singlequotes (') werden Variablen nicht interpoliert.
Da ich nicht auswendig weiß, wo etwas über Variableninterpolation in der perldoc steht, rate ich folgende Teil in loser Reihenfolge zu lesen: ;)
perldoc perlsyn
perldoc perlop
perldoc perldata
Ich hoffe das in den erwähnten Abschnitten die gesuchte Information steht. :)
Gruß Alex
--
http://www.google.de/search?hl=de&safe=off&q=Rechtschreibung+Standart