Re: Net::FTP Help !
the raw list returned from ftp server is something like this: drwx--x--x5 529 529 4096 Mar 10 13:56 .. -rwxr-xr-x1 529 529 8504 Mar 11 14:44 aboutus.html drwx--x--x4 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-x1 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
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
RE: Net::FTP Help !
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
Re: Net::FTP Help !
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