Judith: Dateien anlegen

Ich versuche Teile eines Formulars in einer txt-Datei zu speichern.Ich arbeite mit win95 und Xitami.
open(KEEPDAT,">>../temp/kaufen.txt");  @Formularfelder = split(/&/, $Daten);  
    for(@Formularfelder)  
   {
    ($name, $value) = split(/=/, $Feld);  
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~ s/<!--(.\n)*-->//g;      
    $Formular[$i] = $name;  
    $i = $i + 1;
    $Formular[$i] = $value;  
    $i = $i + 1;

}
   print KEEPDAT "$Formular[28]","$Formular[29]","$Formular[30]","$Formular[31]";
   close(KEEPDAT);
  
   print "Hallo Welt!\n";

Es erscheint Hallo Welt, aber wo bleiben die Daten?
Danke Judith

  1. Hi,

    Ich versuche Teile eines Formulars in einer txt-Datei zu speichern.Ich arbeite mit win95 und Xitami.
    open(KEEPDAT,">>../temp/kaufen.txt");

    ist die Datei vielleicht nur an einem anderen Ort als erwartet? Vielleicht gelangst Du durch ".." auch in einen "nicht beschreibbaren Bereich" (ich kenne Xitami nicht). Vor allem aber solltest Du überprüfen, ob das open auch korrekt ausgeführt wurde:

    open(KEEPDAT,">>../temp/kaufen.txt") or die "Kann kaufen.txt nicht oeffnen: $!";
    ...
    close(KEEPDAT) or die "Kann kaufen.txt nicht schliessen: $!";

    Anschließend schau mal ins Errorlog!

    Cheatah

    1. Hi,

      Ich versuche Teile eines Formulars in einer txt-Datei zu speichern.Ich arbeite mit win95 und Xitami.
      open(KEEPDAT,">>../temp/kaufen.txt");

      ist die Datei vielleicht nur an einem anderen Ort als erwartet? Vielleicht gelangst Du durch ".." auch in einen "nicht beschreibbaren Bereich" (ich kenne Xitami nicht). Vor allem aber solltest Du überprüfen, ob das open auch korrekt ausgeführt wurde:

      open(KEEPDAT,">>../temp/kaufen.txt") or die "Kann kaufen.txt nicht oeffnen: $!";
      ...
      close(KEEPDAT) or die "Kann kaufen.txt nicht schliessen: $!";

      Anschließend schau mal ins Errorlog!

      Cheatah

      Hallo Cheatah,Jürgen,
      ich habe esgeschafft das die Datei beschrieben wird. Natürlich sind schon wieder zig neue Fragen aufgetaucht.
      Schön, dass man Fragen stellen kann, man kommt sich so allein vor .Ich bin erst am anfangen, es kommt mir vor wie Zauberei.
      Merci Judith
      Der Fehler waren fehlende Gänsefüsschen und Strichpunkte, die Pfadangabe war richtig.Jetzt kommen die Probleme mit dem Daten einlesen...

      1. an einem anderen Ort als erwartet? Vielleicht gelangst Du durch ".." auch in einen "nicht beschreibbaren Bereich" (ich kenne Xitami nicht). Vor allem aber solltest Du überprüfen, ob das open auch korrekt ausgeführt wurde:

        open(KEEPDAT,">>../temp/kaufen.txt") or die "Kann kaufen.txt nicht oeffnen: $!";
        ...
        close(KEEPDAT) or die "Kann kaufen.txt nicht schliessen: $!";

        Anschließend schau mal ins Errorlog!

        Cheatah

        Hallo Cheatah,Jörg
        ich habe esgeschafft dass die Datei beschrieben wird. Natürlich sind schon wieder zig neue Fragen aufgetaucht.
        Schön, dass man Fragen stellen kann, man kommt sich so allein vor .Ich bin erst am anfangen, es kommt mir vor wie Zauberei.
        Merci Judith
        Der Fehler waren fehlende Gänsefüsschen und Strichpunkte, die Pfadangabe war richtig.Jetzt kommen die Probleme mit dem Daten einlesen...

        Hallo ,
        das neue Problem:
        @Zeilen=("$Daten");
          open(KEEPDAT,"<../temp/kaufen.txt");
            while(<KEEPDATEI>)
           {
            push(@Zeilen,$_);
           }
          close(KEEPDAT);
          
          @Formularfelder = split(/&/, $Daten);
          usw.
        Was ist hier falsch beim Einlesen ?Es folgt eine htmlseite in Perl, die in einer textarea einen Teil der obigen Daten enthält.Die htmlseite wird angezeigt, das textareafeld ist leer.
        Weiterknobeln.     Judith

        1. Hi,

          das neue Problem:

          vielleicht wäre es sinnvoll gewesen, dazu das vorher geschriebene zu löschen. Zitiere bitte ausschließlich das, worauf Du Dich beziehst!

          @Zeilen=("$Daten");
            open(KEEPDAT,"<../temp/kaufen.txt");
              while(<KEEPDATEI>)
             {
              push(@Zeilen,$_);
             }
            close(KEEPDAT);
            
            @Formularfelder = split(/&/, $Daten);
            usw.
          Was ist hier falsch beim Einlesen ?

          Eigentlich nichts, bis auf daß Du KEEPDAT öffnest und aus KEEPDATEI zu lesen versuchst ;-)

          Es folgt eine htmlseite in Perl, die in einer textarea einen Teil der obigen Daten enthält.Die htmlseite wird angezeigt, das textareafeld ist leer.

          Dazu müßte ich vermutlich wissen, was Du in die Textarea printest. Ich schätze aber, obiger Tippfehler ist schon verantwortlich - und wenn nicht, dann schau Dir bitte erstmal genau(!) an, was überhaupt in der Datei steht, das hilft häufig.

          Cheatah

          1. Hi,

            das neue Problem:

            vielleicht wäre es sinnvoll gewesen, dazu das vorher geschriebene zu löschen. Zitiere bitte ausschließlich das, worauf Du Dich beziehst!

            @Zeilen=("$Daten");
              open(KEEPDAT,"<../temp/kaufen.txt");
                while(<KEEPDATEI>)
               {
                push(@Zeilen,$_);
               }
              close(KEEPDAT);
              
              @Formularfelder = split(/&/, $Daten);
              usw.
            Was ist hier falsch beim Einlesen ?

            Eigentlich nichts, bis auf daß Du KEEPDAT öffnest und aus KEEPDATEI zu lesen versuchst ;-)

            Es folgt eine htmlseite in Perl, die in einer textarea einen Teil der obigen Daten enthält.Die htmlseite wird angezeigt, das textareafeld ist leer.

            Dazu müßte ich vermutlich wissen, was Du in die Textarea printest. Ich schätze aber, obiger Tippfehler ist schon verantwortlich - und wenn nicht, dann schau Dir bitte erstmal genau(!) an, was überhaupt in der Datei steht, das hilft häufig.

            Cheatah

            Hoi Cheatah, okay, ich versuche klarer zu fragen:
            es sind zwei scripts .Das erste schreibt $Daten in die txtddatei.Ich habe versucht,$Daten vor dem in die Datei schreiben auseinanderzunehmen und nur einzelne Teile in die txt Datei zu schreiben,
            print "$Formular[31]"\n;
            aber in  txt steht dann $Formular[31] und nicht der Wert davon.
            print "$Daten"\n;
            der Datenstrom wird korrekt in txt geschrieben.

            Das zweite script sollte txt holen, und das ist ja ein Datenstrom(mit& und=) den ich noch auseinandernehmen muss.Ich nenne ihn wieder $Daten.
            Die textarea sollte $Formular[31]enthalten,ich habe mit html in Perl ein Input gemacht, das als
            value $F..[31]  enthält. value="$Formular[31]"

            Ist das im Prinzip richtig?
            Am liebsten würde ich schon nur einzelne Teile aus dem ersten$Daten in die txt Datei schreiben, und nicht den ganzen Datenstrom.
            Muss ich dazu zuerst definieren zum Beispiel
            $Teil=Formular[31];  ??

            Grüsse von Judith
            Das nächste mal lösche ich das vordere oder beginne einen neuen string, aber die Fragen hängen schon zusammen...

            1. @Zeilen=("$Daten");
                open(KEEPDAT,"<../temp/kaufen.txt");
                  while(<KEEPDATEI>)
                 {
                  push(@Zeilen,$_);
                 }
                close(KEEPDAT);
                
                @Formularfelder = split(/&/, $Daten);
                usw.
              Was ist hier falsch beim Einlesen ?

              Hm ... Du speicherst den Dateiinhalt in @Zeilen, willst dann aber @Daten zerlegen?

              Ich habe versucht,$Daten vor dem in die Datei schreiben auseinanderzunehmen und nur einzelne Teile in die txt Datei zu schreiben,
              print "$Formular[31]"\n;
              aber in  txt steht dann $Formular[31] und nicht der Wert davon.

              Das \n gehört in die Zeichenkette hinein. Solche kleinen Fehler machen das Debuggen schwierig.
              Beispielsweise könntest Du in Deinem Source-Code print "$Formular [31]"; geschrieben haben - schon dieses Leerzeichen vor der Klammer würde ausreichen, daß es nicht mehr funktioniert.
              Also bitte Original-Code mit cut&paste übernehmen, nicht ungefähr abschreiben.

              Das zweite script sollte txt holen, und das ist ja ein Datenstrom(mit& und=) den ich noch auseinandernehmen muss.Ich nenne ihn wieder $Daten.

              Das Auseinandernehmen würde ich schon im ersten Skript erledigen. Insbesondere, weil Du dann lesbarere Daten in Deiner Datei stehen hast.

              Bau mal mehr Zwischenausgaben in Dein Skript hinein (wahlweise auf Bildschirm oder LOG-Datei, je nachdem, wie Du das Skript testest).

              Am liebsten würde ich schon nur einzelne Teile aus dem ersten$Daten in die txt Datei schreiben, und nicht den ganzen Datenstrom.
              Muss ich dazu zuerst definieren zum Beispiel
              $Teil=Formular[31];  ??

              Nein.

              1. .

                Das \n gehört in die Zeichenkette hinein. Solche kleinen Fehler machen das Debuggen schwierig.
                Beispielsweise könntest Du in Deinem Source-Code print "$Formular [31]"; geschrieben haben - schon dieses Leerzeichen vor der Klammer würde ausreichen, daß es nicht mehr funktioniert.
                Also bitte Original-Code mit cut&paste übernehmen, nicht ungefähr abschreiben.

                Das zweite script sollte txt holen, und das ist ja ein Datenstrom(mit& und=) den ich noch auseinandernehmen muss.Ich nenne ihn wieder $Daten.

                Das Auseinandernehmen würde ich schon im ersten Skript erledigen. Insbesondere, weil Du dann lesbarere Daten in Deiner Datei stehen hast.
                Bau mal mehr Zwischenausgaben in Dein Skript hinein (wahlweise auf Bildschirm oder LOG-Datei, je nachdem, wie Du das Skript testest).
                Am liebsten würde ich schon nur einzelne Teile aus dem ersten$Daten in die txt Datei schreiben, und nicht den ganzen Datenstrom.

                Muss ich dazu zuerst definieren zum Beispiel
                $Teil=Formular[31];  ??

                Nein.

                Danke, ok ich sehe es jetzt,
                es hat übrigens geklappt, die einzelnen $Formular[x] in txt zu schreiben.Sorry, ich bin eine Anfängerin,mit tausend Fragen(die ich aber nicht alle hier stellen werde:-).
                Und eine textarea hat keinen value, die Vorbelegung kommtzw. die ta tags<>aha!<>.Jetzt kommt immer noch das Problem, die txtDatei in verschiedene Skalare(?) zu stecken...
                Welches PerlBuch in Deutsch ist gut zum Grundlagen-studium?

                Grüsse von Judith

                1. Hi Judith,

                  Welches PerlBuch in Deutsch ist gut zum Grundlagen-studium?

                  mir hat "Programmieren mit PERL" vom O‚Reilly Verlag ganz gut weitergeholfen, außerdem stehen einige Grundlagen auch in SELFHTML

                  Grüsse von Judith

                  Gruß Jörg

                  1. Hi Judith,

                    Welches PerlBuch in Deutsch ist gut zum Grundlagen-studium?
                    mir hat "Programmieren mit PERL" vom O‚Reilly Verlag ganz gut weitergeholfen, außerdem stehen einige Grundlagen auch in SELFHTML

                    Grüsse von Judith

                    »»  Gruß Jörg

                    Hoi Jörg
                    Danke für die Tips, Die Beispiele aus selfhtml finde ich schwierig, weil sie oft zwei Dinge aufs mal erklären.
                    von Judith

  2. Hallo Judith!

    Mit dem kompletten Pfad funktioniert es.
    z.B.
    open(KEEPDAT,">>c:/Xitami/temp/kaufen.txt");

    Gruß
    Jörg

    1. noch kurz die Erklärung:

      Das cgi läuft ja nicht im cgi-bin von xitami, sondern im angegebenen Perl-Verzeichnis.
      Selbstverständlich kannst Du dich auch von dort
      mit ../ durch Deine Festplatte navigieren.

      Gruß
      Jörg