in reply to Re: net::sftp remove storing files for get and remove
in thread net::sftp remove storing files for get and remove

Hello, Thanks for the response. I messed around with some examples a little bit, and was able to get a file listing, but am having problems retriving the files now using that listing. Let me know if you have any ideas. Also, I noticed in my list that I have a "." for the current directory and ".." for the parent directory. Any ideas for how to exclude these?
#!/usr/bin/perl -w use Net::SFTP::Foreign; my $host = 'xxxx.xxxxxxxxxx.com'; my $sftp = Net::SFTP::Foreign->new($host, user=>'username', password=>'password'); $sftp->die_on_error("Unable to establish SFTP connecti +on"); my @files = $sftp->ls('/xxxx/xxxxx/outbound'); foreach my $f ( @files ) { foreach my $file_ref ( @{$f} ) { #print "$file_ref->{'filename'}\n"; $sftp->get("/xxxx/xxxxx/outbound/$file_ref->{'filename'}","/xx +x/xxx/xxx/local_inbound/"); } }
Thanks, Chris.

Replies are listed 'Best First'.
Re^3: net::sftp remove storing files for get and remove
by jethro (Monsignor) on Aug 08, 2011 at 01:23 UTC

    Not really a bug, but since $sftp->ls returns a single scalar, i.e. an array reference, the outer loop seems to be superfluous. If you print out @files and you see only something like "ARRAY(0x734657)", you can change this part of the script to

    my $f = $sftp->ls('/xxxx/xxxxx/outbound'); # $f instead of @files #removed a loop here foreach my $file_ref ( @{$files} ) {

    To remove the dirs you might take a look at grep, which works similar to the command line grep:

    my @files= grep (!/^\.\.?$/, @files); #or without regex my @files= grep ($_ ne "." and $_ ne "..", @files);

    The rest looks good. Without knowing what problem you have with it I can't help you. What error message do you get?