Patrick Andrieu: Dateien lesen und schreiben

Beitrag lesen

Hallo Engin!

Das ist ja mal wieder Typisch, beim aller ersten Aufruf hatte es funktioniert,
zwar wurden die Zeilen nicht nummeriert aber in die OUTPUT file wurde was geschrieben,

Was denn, wenn nicht zeilenweise das Selbe plus vornedran Zeilennummern à la
   123:
   124:

das funzte aber irgendwie nur einmal, jetzt geht es nicht mehr, bzw. wird nichts mehr in die OUTPUT Seite eingetragen.

chdir "C:/xampp/anonymous/nimmet";
open INPUT, "suche.php" or die "Can't open file: $!";
open OUTPUT, "write.txt" or die "Can't open file: $!";
my $count = 1;
while (<INPUT>) {
$count = $count < 10 ? "  ".$count : $count < 100 ? " ".$count : $count;
print OUTPUT "$count: $_";
$count++;
}

  
Du öffnest hier beide Dateien nur zum Lesen!... und hast meinen [Hinweis](https://forum.selfhtml.org/?t=166817&m=1089903), die [korrigierte Fassung](https://forum.selfhtml.org/?t=166817&m=1089846) zu nehmen, da ich im ersten Post einen Vergesslichkteisfehler hatte, ignoriert.  
  
Der erste open öffnet die Quelldatei. Die soll ja nicht verändert werden, also reicht einfach, deren Namen anzugeben. Sie wird zum Lesen geöffnet. Hier hätte ich auch:  
  
~~~perl
  
open INPUT, "<suche.php" or die "Can't open file: $!";  
#            ^ Dieses Zeichen bedeutet: Zum »nur lesen« öffnen

schreiben können.

Der zweite open soll die Zieldatei öffnen UND beschreiben. Exisitiert keine, soll sie neu erstellt werden. Also wird das Perl mitgeteilt mit den Zeichen:

Öffnen (evtl. neu erstellen) und Inhalt überschreiben oder

Öffnen (evtl. neu erstellen) und Inhalt dranhängen

Eigentlich hätte ich »>« benutzen sollen, denn um eine Textdatei mit Zeilennummern zu erstellen, sozusagen als Zeigekopie der Quelldatei, wollen wir ja keinen Inhalt an einer evtl. bereits bestehenden dranhängen: wenn z.B. festgestellt wird, dass man in der Quelldatei ein paar Zeilen HTML-Text vergessen hat, und man will die Zieldatei deswegen neu machen, sollte die Zieldatei ja überschrieben werden, und der neue Quellcode (in dem Fall wörtlich: Code von der Quelldatei *g*) nicht einfach unter dem alten erscheinen. Deswegen hier die korrigierteRE Fassung ;) :

  
 chdir "C:/xampp/anonymous/nimmet";  
 open INPUT, "suche.php" or die "Can't open file: $!";  
 open OUTPUT, ">write.txt" or die "Can't open file: $!";  
 my $count = 1;  
 while (<INPUT>) {  
 $count = $count < 10 ? "  ".$count : $count < 100 ? " ".$count : $count;  
 print OUTPUT "$count: $_";  
 $count++;  
 }

Zu open: http://de.selfhtml.org/perl/funktionen/einausgabe.htm#open

Ich kriege das mit den Sections und Subsections nicht so hin, wie ich das gerne hätte, im makenav-Nachfolgeskript...
Ich würd jetzt so gern sagen "zeig mal her" aber viel bringen wird das nicht. :-)

Ich habe eine rekursive Funktion geschrieben, die mir die Sections bis aus der hintersten Schublade rausholt. Ausgehend von einer verschachtelten Web-Struktur:

start page (Root, Index-Seite - Startseite) <- oberste Ebene (level0)
  level1-A/page1 (1. Unterverz. von Root - Seite 1) <- level1
  level1-A/page2 (1. Unterverz. von Root - Seite 2) <- level1
    level1-A/level2-A/page1 (1. Unterverz. vom 1. Unterverz. -Seite 1) <- level2
  level1-B/page1 (2. Unterverz. von Root - Seite 1) <- level1
  level1-B/page2 <- level1
    level1-B/level2-A/page1 <- level2
    level1-B/level2-A/page2 <- level2
      level1-B/level2-A/level3-A/page1 <- level3
.
.
.

also so was wie (in Verzeichnissen ausgedrückt am Beispiel eines Webs mypets.example.org):

root (dir)
  index.html.................level0/page1
  katzen (dir)...............level1-A/
    index.html...............level1-A/page1
    muschi.html..............level1-A/page2
    muschikinder (dir).......level1-A/level2-A
      kleineskaetzchen.html..level1-A/level2-A/page1
  hunde (dir)................level1-B/
    index.html...............level1-B/page1
    fifi.html................level1-B/page1
    fifikinder (dir).........level1-B/level2-A
      hasso.html.............level1-B/level2-A/page1
      bello.html.............level1-B/level2-A/page2
      fifienkel (dir)........level1-B/level2-A/level3-A/
        wuffel.html..........level1-B/level2-A/level3-A/page1
.
.
.

komme ich an allen Daten ran, nur einen »Pretty HTML-Output«, eine schön strukturierte, verschachtelte <ul>-Liste bekomme ich nicht, bzw. nicht hundertprozentig hin. Ich bekomme die Liste zwar valide, also richtig verschachtelt, nur mit den Einrückungen happerts:

Startseite: index.html
<ul>
  <li>katzen/index.html</li>
  <li>katzen/muschi.html
    <ul>
      <li>kleineskaetzchen.html</li>
    </ul>
    </li> <-- hier sollte das </li> wieder 2 Leerzeichen nach vorne, das haut bei mir nicht richtig hin

Struppi wird sagen, ich spinne, hauptsache der Output ist valide ;)

Viele Grüße aus Frankfurt/Main,
Patrick

--

_ - jenseits vom delirium - _
[link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
Nichts ist unmöglich? Doch!
Heute schon gegökt?
0 78

Schriftart wechsel hakt manchmal

Engin
  • javascript
  1. 0

    Schriftart wechsel hakt manchmal korrektur

    Engin
    1. 0
      Patrick Andrieu
      1. 0

        Danke, gelöst

        Engin
        1. 0
          Struppi
          1. 0
            Engin
            1. 0
              Engin
              1. 0
                Patrick Andrieu
                1. 0
                  Engin
                  1. 0
                    Patrick Andrieu
                    1. 0
                      Engin
                      1. 0
                        Engin
                        1. 0
                          Patrick Andrieu
                          1. 0
                            Engin
                            1. 0
                              Patrick Andrieu
                              1. 0
                                Patrick Andrieu
                                1. 0
                                  Engin
                                2. 0
                                  Engin
                                  1. 0
                                    Patrick Andrieu
                                    1. 0
                                      Engin
                                      1. 0
                                        Patrick Andrieu
                                        1. 0
                                          Engin
                                          1. 0
                                            Patrick Andrieu
                                            1. 0
                                              Engin
                                              1. 0
                                                Shadowcrow
                                                1. 0
                                                  Engin
                                                  1. 0
                                                    Shadowcrow
                                            2. 0
                                              Engin
                                              1. 0
                                                Struppi
                                              2. 0
                                                Patrick Andrieu
                                                1. 0
                                                  Struppi
                                                  1. 0
                                                    Patrick Andrieu
                                                    1. 0

                                                      Schrift formatieren mit Javascript | Javascript ist Toll! :-)

                                                      Engin
                                                      1. 0
                                                        Struppi
                                                      2. 0
                                                        Patrick Andrieu
                                                        1. 0
                                                          Engin
                                                          1. 0
                                                            Patrick Andrieu
                                                            1. 0

                                                              AArgh!

                                                              Patrick Andrieu
                                                            2. 0
                                                              Engin
                                                              1. 0
                                                                Patrick Andrieu
                                                                1. 0
                                                                  Engin
                                                                2. 0
                                                                  Engin
                                                                  1. 0
                                                                    Patrick Andrieu
                                                                    1. 0

                                                                      Aargh (zu schnell getippt)!

                                                                      Patrick Andrieu
                                                                    2. 0
                                                                      Engin
                                                                      1. 0
                                                                        Patrick Andrieu
                                                                        1. 0
                                                                          Engin
                                                                          1. 0

                                                                            Dateien lesen und schreiben

                                                                            Patrick Andrieu
                                                                            • perl
                                                                            1. 0
                                                                              Engin
                                                                            2. 0
                                                                              Engin
                                                                              1. 0
                                                                                Struppi
                                                                                1. 0
                                                                                  Patrick Andrieu
                                                                                  1. 0
                                                                                    Engin
                                                                                  2. 0
                                                                                    Struppi
                                                                                    1. 0
                                                                                      Engin
                                                                                      1. 0
                                                                                        Struppi
                                                                                        1. 0
                                                                                          Engin
                                                                                          1. 0
                                                                                            Struppi
                                                                                            1. 0
                                                                                              Patrick Andrieu
                                                                                              1. 0
                                                                                                Struppi
                                                                                                1. 0
                                                                                                  Patrick Andrieu
                                                                                                  1. 0
                                                                                                    Struppi
                                                                                      2. 0
                                                                                        Patrick Andrieu
                                                                                    2. 0
                                                                                      Patrick Andrieu
                                                                                      1. 0
                                                                                        Struppi
                                                                              2. 0
                                                                                Patrick Andrieu
                2. 0
                  Engin
                  1. 0
                    EKKi
        2. 0
          Patrick Andrieu
          1. 0
            Engin
            1. 0
              Patrick Andrieu
              1. 0
                Kai345
  2. 0
    Struppi
    1. 0
      Patrick Andrieu
      1. 0
        Engin
        1. 0
          Struppi
          1. 0
            Engin
            1. 0
              Struppi