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

Where do you have problems? I would suggest reading the Net::SFTP documentation, then starting with the code example in the Synopsis section. Find the function to get a directory listing, use it and print the result out to the user, line by line with a counter in front. Let the user give you the number of the file he wants. Fetch that.

It isn't that difficult. Just write the code step by step. If you have a specific problem, ask

  • Comment on Re: net::sftp remove storing files for get and remove

Replies are listed 'Best First'.
Re^2: net::sftp remove storing files for get and remove
by cdlaforc (Novice) on Aug 07, 2011 at 19:46 UTC
    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.

      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?