juha: Zahlen als Name einer Variable

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

  1. 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

    1. 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

      1. 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

        1. 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

          1. 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

          2. 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

            1. 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

              1. 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