Re: Net::FTP Help !

2004-08-13 Thread Kelvin Wu
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 !

2004-08-10 Thread Kelvin Wu
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 !

2004-08-10 Thread Chris Federico
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 !

2004-08-09 Thread Wiggins d Anconia
 
 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