achim: rekursion

hallo zusammen,

ich versuche ein ftp-objekt an eine funktion zu übergeben, die die verzeichnisstruktur ausliest.
sieht so aus:

$ftp = Net::FTP->new    usw...

54: sub get{
55: my ($ftp,$path) = @_;
56: my @DirList = $ftp->ls or die "Konnte Verzeichnis nicht lesen";
57: print "-----------$path------------------------------------\n";
58:         foreach (@DirList){
59:   print "$_\n";
60:   if ($ftp->cwd($_)){
61:    &get($ftp,$_);
62:   }
63:  }
64:  return;
65: }

das erste verzeichnis wird erkannt, die restlichen nicht mehr.
$ftp->cwd($_) liefert keine 1 obwohl $_ ein verzeichnisname ist.
unter linux: Konnte Verzeichnis nicht lesen at xyz.pl line 56.
unter MS: nixx

müsste doch eigentlich gehen - oder?
gibts da vielleicht noch einen anderen weg?
danke schon mal
achim

  1. Hi,

    $ftp->cwd($_) liefert keine 1 obwohl $_ ein verzeichnisname ist.

    bist Du sicher, daß Du konsistent auf beiden Seiten (Dein Client und der FTP-Server) von den selben Verzeichnissen ausgehst? Wenn Du einmal gewechselt hast, bist Du auch im nächsten Schritt einer Schleife oder Rekursion dort, das mußt Du beachten!

    Vermutlich hilft ein cwd('..') an geeigneter Stelle.

    Cheatah

    1. hallo,

      Vermutlich hilft ein cwd('..') an geeigneter Stelle.

      ist ja logisch, genau das.
      ich danke dir!
      by the way...
      glaubst du es ist besser das ftp-objekt by value oder als referenz zu übergeben und dann zu dereferenzieren?

      gruss
      achim

      1. Hi,

        glaubst du es ist besser das ftp-objekt by value oder als referenz zu übergeben und dann zu dereferenzieren?

        gut daß Du's ansprichst, ich hatte es mir nämlich verkniffen, Dir Referenzen zu empfehlen ;-)

        Cheatah

      2. Hi!

        glaubst du es ist besser das ftp-objekt by value oder als referenz zu übergeben und dann zu dereferenzieren?

        $ftp ist sowieso schon eine Referenz. $ftp waere eine Referenz auf eine Referenz.

        So long