[perl] ftp->LS vraagje.

Pagina: 1
Acties:

  • digit7722
  • Registratie: Juni 2001
  • Laatst online: 27-11-2018

digit7722

Rule # 217

Topicstarter
Hoi perl vriendjes.

ik heb een vraagje over het ls command onder use net::ftp.
ik kon nergens een antwoord vinden.

ik heb de search doorgrondig doorzocht net als een hele berg sites en boeken (perlgurus.com o'reilly learning perl enz enz).

hier is mijn scriptje een simpele ftp client:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl -w

use Net::FTP;

$username = "XXXXX";
$password = "XXXXX";
$address  = "ftp.efteepeesite.com";

$ftp = Net::FTP->new($address) or die "Can't connect: $@\n";

$ftp->login($username, $password) or die "Couldn't login\n";

$pwd = ($ftp->pwd or die "Couldnt get Full path\n");

$ls = ($ftp->ls or die "Couldnt get directory listing\n");

print $pwd;

print $ls;


het probleem is dat $ls alleen maar een zooi garble geeft en niet een mooie directory listing zoals ik hoopte.

You can't free a fish from water.


  • tomato
  • Registratie: November 1999
  • Niet online
Lijkt het nog steeds nergens op als je hebt gelezen wat ls hoort terug te geven?

  • digit7722
  • Registratie: Juni 2001
  • Laatst online: 27-11-2018

digit7722

Rule # 217

Topicstarter
hmmm nee als ik er een array van maak blijft het diezelfde onzin.
dat van die array had ik trouwens wel zelf kunnen ontdekken mijn excuses daarvoor ik heb erover heen gelezen denk ik.
maar helaas nog steeds geen succes.

You can't free a fish from water.


  • tomato
  • Registratie: November 1999
  • Niet online
Je krijgt een reference naar de array in $ls. Probeer het eens met
code:
1
print @$ls;

Lees even het een en ander over scalar en list references in Perl, dan wordt het je wel duidelijk.

  • digit7722
  • Registratie: Juni 2001
  • Laatst online: 27-11-2018

digit7722

Rule # 217

Topicstarter
hmmm das vreemd als ik @$ls doe krijg ik noppes.
nou ja ik zal eerst even scalar en list references gaan nalezen.

You can't free a fish from water.


Verwijderd

zo ongeveer moet je dat dus doen:
code:
1
2
3
4
%dirlist = $ftp->ls();
foreach $item (%dirlist) {
       print "$item\n";
}

[ Voor 17% gewijzigd door Verwijderd op 28-01-2003 19:00 ]


  • digit7722
  • Registratie: Juni 2001
  • Laatst online: 27-11-2018

digit7722

Rule # 217

Topicstarter
hmmm nope die %dirlist werkt ook niet.
man ik zie iets vreselijk over het hoofd denk ik.
ik heb mijn o'reilly boek helemaal doorgelezen en toch niks kunnen vinden.

You can't free a fish from water.


  • tomato
  • Registratie: November 1999
  • Niet online
Hoort de dirlisting wel iets te geven? Maw, zijn er wel directories en heeft de gebruiker wel de juiste leesrechten?

  • digit7722
  • Registratie: Juni 2001
  • Laatst online: 27-11-2018

digit7722

Rule # 217

Topicstarter
ja dat heb ik even van te voren gecontroleerd en ik kan met de zelfde credentials onder iexplore wel gewoon de dir list zien.

STOP de persen.
hij werk wel ;)

ik heb even een andere ftp server geprobeerd (quicknet) en daat deed hij het geweldig.

mijn uiteindelijke code is dus:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl -w

use Net::FTP;

$username = "XXXXX";
$password = "XXXXX";
$address  = "home.quicknet.nl";
#$directory = "/";

$ftp = Net::FTP->new($address) or die "Can't connect: $@\n";

$ftp->login($username, $password) or die "Couldn't login\n";

#$ftp->cwd($directory) or die "Couldn't change directory\n";


$pwd = ($ftp->pwd or die "Couldnt get Full path\n");

$ls = ($ftp->ls or die "Couldnt get directory listing\n");
print "Current dir is $pwd";
foreach $item (@$ls) {
    print "$item\n"
};


j00 guys rock _/-\o_

[ Voor 75% gewijzigd door digit7722 op 28-01-2003 20:41 ]

You can't free a fish from water.


Verwijderd

code:
1
2
3
4
5
@filelist = $ftp->ls();

  foreach (@filelist) {
    print "$_\n";
  }


probeer dat eens
Pagina: 1