the raw list returned from ftp server is something like this: drwx--x--x 5 529 529 4096 Mar 10 13:56 .. -rwxr-xr-x 1 529 529 8504 Mar 11 14:44 aboutus.html drwx--x--x 4 529 529 4096 Mar 11 13:54 cgi-bin
those lines start with 'd' are directories, 'l' are symblinks. > next if ($2 eq '.' or $2 eq '..'); sorry my mistake. it shoud be: # Store file name if ($_ =~ /(.+)(\d\d:\d\d) (.+)/) { push @files, $3; } if you are sure you don't have any file/dir name containing spaces, you can split the raw list by spaces and take the last element of array as filename. for (@raw_list) { my @dirinfo = split(/\s+/, $_); next if $dirinfo[0] =~ /^d|^l/; push @files, $dirinfo[8]; } this is much easy but it won't work for those file name containing spaces: -rwxr-xr-x 1 529 529 8504 Mar 11 14:44 about us.html 'about' will be push into files array, not 'about us.html' On Tue, 10 Aug 2004 10:38:53 -0500, Chris Federico <[EMAIL PROTECTED]> wrote: > Thanks Kelvin /Wiggins .. > > Kelvin when you say next if $_ =~ /^d|^l/; are you pattern mattching > here ? Being new to this it seems confusing to me also: > > if ($_ =~ /(.+)(\d\d:\d\d) (.+)/) { > next if ($2 eq '.' or $2 eq '..'); > push @files, $2; > > In terms I can understand what is this doing .. > > Thanks > > Chris > > > > > -----Original Message----- > From: Kelvin Wu [mailto:[EMAIL PROTECTED] > Sent: Monday, August 09, 2004 10:44 PM > To: [EMAIL PROTECTED] > Subject: Re: Net::FTP Help ! > > my @raw_list = $ftp->dir($remote_dir); > my @files; > for (@raw_list) { > # Skip directory and symblink > next if $_ =~ /^d|^l/; > > # Store file name > if ($_ =~ /(.+)(\d\d:\d\d) (.+)/) { > next if ($2 eq '.' or $2 eq '..'); > push @files, $2; > } > } > > On Mon, 9 Aug 2004 19:38:19 -0600, Wiggins d Anconia > <[EMAIL PROTECTED]> wrote: > > > > > > Hi Guys and Gals , > > > > > > I'm new to perl ... Here is my problem .. > > > > > > I'm connecting fine to the remote computer and logging in fine .. > > > what I want to do is a get all files from the remote directory . > > > Here is is a snippet of the code > > > > > > $ftp->cwd($remote_dir) > > > or die "cannot change working directory ", $ftp->message; > > > > > > # show current directory > > > $ftp->pwd(); > > > > > > > > > @all_files = $ftp->ls(); > > > > > > print @all_files; > > > > > > > > > foreach $file(@all_files) { > > > > > > $ftp->get($file) > > > or die "cannot get file", $ftp->message; } > > > > > > > > > > > > The problem is that the remote directory has a subdirectory in it so > the > > > array reads it in @all_files = $ftp->ls; so when I go to do a > > > $ftp->get($file) it reads the subdirectory name into it as well so > it > > > bombs out saying it cannot find file BLAH BLAH ... is there a way to > > > read the directory without the subdirectory in there .. just the > files I > > > want to get . > > > > > > > > > > > > Hope this is clear .. > > > > > > > > > > You can use the 'dir' method to get a long listing, which should > include > > the permissions string. Then you can step through the list and pull > only > > those files that don't start with a 'd'. This requires more parsing > and > > is less precise but is the only way I know to do it. I thought someone > > was writing an extension that did this automatically but don't know if > > it has made its way to CPAN. > > > > http://danconia.org > > > > -- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > <http://learn.perl.org/> <http://learn.perl.org/first-response> > > > > > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > <http://learn.perl.org/> <http://learn.perl.org/first-response> > > > ----------------------------------------------------------------- > Visit our Internet site at http://www.reuters.com > > Get closer to the financial markets with Reuters Messaging - for more > information and to register, visit http://www.reuters.com/messaging > > Any views expressed in this message are those of the individual > sender, except where the sender specifically states them to be > the views of Reuters Ltd. > > > > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > <http://learn.perl.org/> <http://learn.perl.org/first-response> > > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>