Problem mit rekrusiven verzeichnis-durchlauf

  • Also ich habe zunächst mal folgenden Code:

    Die Ausgabe sieht wie folgt aus:

    Allerdings ist im Verzeichnis /home/gregor/.work/.web/k-core WESENTLICH mehr als nur der Ordner private/ auch in den unter Ordnern übrigens
    es sieht also so aus als würde er die Schleife abbrechen nachdem er copy_rec() aufruft...
    Woran könnte das liegen?
    Und, was viel wichtiger ist, wie kann ich das Problem beheben?

    Schonmal danke :D

    MFG Greg10

    Orthografie und Grammatik in diesem Beitrag sind frei erfunden und eine eventuell gefundene Übereinstimmung mit einer lebenden oder toten Sprache sollte von allen Beteiligten unverzüglich ignoriert werden.

    K-Progs (In bearbeitung)
    Der inoffizielle Forum-hilfe IRC-Channel
    (Server: irc.freenode.net ; Channel: #forum-hilfe) (Client für FF)
    Ich hab auch 'n Jabber-Account beim CCC ;)

  • Ist das denn keine echte Rekursion?
    Wie soll die denn aussehen?

    Orthografie und Grammatik in diesem Beitrag sind frei erfunden und eine eventuell gefundene Übereinstimmung mit einer lebenden oder toten Sprache sollte von allen Beteiligten unverzüglich ignoriert werden.

    K-Progs (In bearbeitung)
    Der inoffizielle Forum-hilfe IRC-Channel
    (Server: irc.freenode.net ; Channel: #forum-hilfe) (Client für FF)
    Ich hab auch 'n Jabber-Account beim CCC ;)

  • Echte Rekursion heißt, dass die Funktion sich selbst aufruft. Du rufst die dann einfach für Unterverzeichnis erneut auf.
    Das macht dann automatisch für dich die ganze Zwischenspeicherung und es ist sehr viel kürzer.

  • das tu ich doch?
    die funktion liest den content des ordners der übergeben wurde aus und überprüft dann für jede datei ob sie denn auch wirklich eine datei oder ein verzeichniss ist, falls sie denn eines ist ruft die funktion SICH SELBST auf und übergibt das unterverzeichnis

    Orthografie und Grammatik in diesem Beitrag sind frei erfunden und eine eventuell gefundene Übereinstimmung mit einer lebenden oder toten Sprache sollte von allen Beteiligten unverzüglich ignoriert werden.

    K-Progs (In bearbeitung)
    Der inoffizielle Forum-hilfe IRC-Channel
    (Server: irc.freenode.net ; Channel: #forum-hilfe) (Client für FF)
    Ich hab auch 'n Jabber-Account beim CCC ;)

  • Also ich seh hier nur nen Wust (ist jetzt nicht böse gemeint) aus Schleifen.
    Rekursion heisst nicht, dass man auch Unterordner einbezieht, sondern dass eine Funktion sich immer wieder selbst aufruft, und ein Problem damit in kleinstmögliche Teilprobleme zerlegt.
    Ein Beispiel(Javascript):


    Die Fakultät einer natürlichen Zahl ist die Zahl multipliziert mit jedem seiner natürlichen Vorgänger. Somit ist Fakultät 4 (auch: 4!) gleich 4 * 3!. 3! ist wiederum gleich 3 * 2! etc.
    Das Problem wird somit immer kleiner.

    Ich hab keine Ahnung von Perl, und somit auch kein Plan, was du eigentlich machen willst.
    Aber z.Bsp. ein rekursiver rm unter Linux löscht ja auch nicht ganze Ordner, sondern zerlegt das Problem in das Löschen vieler einzelner Dateien.

    Klar soweit?
    Vorteil ist, dass dein Code damit mit Sicherheit um einiges schlanker wird.
    Aber Vorsicht: Rekursionen mit Bedacht einsetzen, da sie meist teurer sind.

    Gruß,
    Jojo


  • Der Wust ist das Resultat meiner Versuche das Problem zu lösen...
    Nur so bin ich auf das eigentliche Problem gekommen :D
    Was ich machen will ist ein Verzeichniss rekursiv zu kopieren, und dazu zerlege ich das Problem des kopierens des gesamten Ordnerinhalts immer wieder in das kleinere Problem nur den Inhalt des einen Unterordners zu kopieren, also auf deine Definition trifft meine herangehendsweise durchaus zu.

    Aber darum geht es hier ja eigentlich garnicht, mein eigentliches Problem ist ja, dass die ausführung der Schleife in der "Elternfunktion" beim aufruf der "Kindfunktion" abgebrochen wird.

    (übrigens sind in dem code genau vier schleifen, zwei sind allerdings nur für das auslesen von datei-inhalt und die erste ist auch nur dafür da, dass das GANZE script für jedes einzelne Projekt ausgeführt wird ;) )

    Orthografie und Grammatik in diesem Beitrag sind frei erfunden und eine eventuell gefundene Übereinstimmung mit einer lebenden oder toten Sprache sollte von allen Beteiligten unverzüglich ignoriert werden.

    K-Progs (In bearbeitung)
    Der inoffizielle Forum-hilfe IRC-Channel
    (Server: irc.freenode.net ; Channel: #forum-hilfe) (Client für FF)
    Ich hab auch 'n Jabber-Account beim CCC ;)

    2 Mal editiert, zuletzt von Greg10 (23. Januar 2009 um 23:19)

  • Es scheint als hätte ich mein Problem jetzt gelöst :D
    Ich müsste nur einige variablen mit my definieren :D
    Siehe hier:

    Orthografie und Grammatik in diesem Beitrag sind frei erfunden und eine eventuell gefundene Übereinstimmung mit einer lebenden oder toten Sprache sollte von allen Beteiligten unverzüglich ignoriert werden.

    K-Progs (In bearbeitung)
    Der inoffizielle Forum-hilfe IRC-Channel
    (Server: irc.freenode.net ; Channel: #forum-hilfe) (Client für FF)
    Ich hab auch 'n Jabber-Account beim CCC ;)