Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: Walking a directory tree with net:FTP:find

by thundergnat (Deacon)
on May 31, 2012 at 17:06 UTC ( #973560=note: print w/ replies, xml ) Need Help??


in reply to Walking a directory tree with net:FTP:find

The obvious question is: "Are you sure that the directory '/test1/in' exists and the ftp user has read permissions to it?". Should the directory be "./test1/in" or "~/test1/in" or maybe "test1/in"? I don't see anything glaringly wrong with the code in general.


Comment on Re: Walking a directory tree with net:FTP:find
Re^2: Walking a directory tree with net:FTP:find
by bdunbar (Initiate) on May 31, 2012 at 19:08 UTC

    The obvious question is:

    Good question. The answer is 'yes'.
    ftp redacted@ftp2.redacted.com Connected to redacted.com. 220 Redacted FTP service. 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /test1/in 250 Directory successfully changed. ftp> ls 229 Entering Extended Passive Mode (|||55795|). 150 Here comes the directory listing. -rw-rw-r-- 1 227 101 308 May 29 20:47 TOMEN_12042000 +44.EDI -rw-rw-r-- 1 227 101 305 May 29 20:47 TOMEN_12042000 +45.EDI -rw-rw-r-- 1 227 101 308 May 29 20:47 TOMEN_12042000 +49.EDI drwxr-xr-x 2 0 0 3 May 29 21:47 one drwxr-xr-x 2 0 0 2 May 29 21:42 two 226 Directory send OK.

    Should the directory be

    I'll run over and give that a shot. Thanks.
Re^2: Walking a directory tree with net:FTP:find
by bdunbar (Initiate) on May 31, 2012 at 20:38 UTC

    I tried with "./test1/in", "~/test1/in", "/", and finally " ".

    Same result as noted in parent

    Finally I extracted the source from the article (to ensure it was clean, free of any krep that might have crept in while I've been thrashing) to a new file, saved to disk, made it executable. Same problem.

    Threw in a directory name that does _not_ exist
    $ftpfind->finddepth (\&wanted, "/namethatdoesnotexist"); sub wanted { print "hello"; print $_; }

    Same Error

    It is possible that when CPAN compiled Net::FTP::Find it ... got something wrong, screwed up the bits?

      I doubt if it got corrupted by the installation process; it's a pure perl module so should be pretty straight forward.

      I'm working on a Windows machine w/Active perl at the moment and was moderately surprised to find there don't seem to be any ppm packages for that module generally available.

      Ah well, I went ahead and installed it manually and tried (a suitably modified version of) your script and am getting the same results locally.

      In poking around a bit, it looks to me like a bug in Net::FTP::Find::Mixin. Specifically, in line 116:

      if ($depth == 0) { next if $_ ne '.'; # <-- line 116 $_ = $directory; }

      The logic seems backwards; I believe it should be eq not ne.

      if ($depth == 0) { next if $_ eq '.'; $_ = $directory; }

      With that change made locally it works as I would expect... And on inspection of the Net::FTP::Find::Mixin CPAN page, there is an open bug report filed about this very problem, (Though it doesn't mention the above solution)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://973560]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (10)
As of 2015-07-07 06:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (87 votes), past polls