rekursion
achim
- perl
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
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
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
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
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