MudGuard: Rekursion - Warnung wegen Prototype...

Beitrag lesen

Hi,

print "$level$_\n";
        showtree( "$level|   ", "$dir\$_");

ersetzen durch: showtree2( "$level|  ", "$dir\$_");

sub showtree2 ($$) {
   my ($level,$dir) = ($_[0],$_[1]);
   showtree($level,$dir);
}

Das gefällt mir aber gar nicht...

da ist leider ein kleiner Workaround nötig, wie mir scheint.

Wozu brauchst du das $level?

Um entsprechend der Verzeichnistiefe einzurücken:

root
|   firstlevel1
|   firstlevel2
|   |   secondlevel1
|   |   |   thirdlevel1
|   |   secondlevel2
|   firstlevel3

usw.
Ja, ich hätte auch einfach einen Zähler nehmen können, der im äußersten Aufruf 0 ist und bei jeder Rekursion um 1 erhöht wird...

  • Wozu ein chdir (halte ich für unsinnvoll, denn nach dem
    Script sollte das Verzeichnis dasselbe wie vorher sein)?

Ja, das war erstmal ein quick-hack - ich könnte jeweils den kompletten Verzeichnispfad benutzen...
Ich brauchte einfach für ein Verzeichnis eine tree-förmige Auflistung...

Mir ist sowieso nicht ganz klar, wieso es an dieser Stelle (lange nachdem der Prototyp feststeht) noch zu früh ist...
ggf. ein Problem im Perlparser, wenn der Parser die Funktion parsed, wird auf sie selber
referenziert (referenz auf nicht vollständig geparstes Codesegment scheint die
Fehlermeldung auszulösen). Soweit zumindest meine These.

Klingt zwar plausibel, aber eigentlich steht der Prototype doch schon bei der öffnenden geschweiften Klammer nach dem sub showtree($$) fest...

cu,
Andreas

--
Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/