2012-04-17 43 views
1

私はNet :: FTP :: Foreignを使用しています。ファイルが見つからないというエラーが発生しています。構文が間違っているか、それを使用する方法を誤解しています。Net :: SFTP :: Foreignを使用したPerl SFTPの問題

$LOGFILE = 'data_log' . $YYYYMMDD . '.log'; 

$sftp->setcwd('/tmp') 
    or die 'Unable to change working directory to /tmp: ' . $sftp->error; 
print "CWD set\n"; 
my $ls = $sftp->ls('/tmp', names_only => 1, ordered => 1); 

foreach my $file (@$ls) { 
    print $file . "\n"; 
} 

print 'Getting file: ' . $LOGFILE . "\n"; 
$sftp->get('/tmp/data_log*', 'data_log' . $YYYYMMDD . 'log') 
     or die 'Could not get remote file: ' . $sftp->error; 

私が手にエラーには、そのようなファイルがリモート側に存在していないが、私は、私はLS cmdを行うとき、彼らは存在しないことが確認できたことです。

スクリプトがうまくいかず、動作しなくなっていますか?

ネット:: SFTPはあなたが持っている10.7

答えて

1

を実行している私のMBPの上に構築しませんので、また、私はネット:: SFTP ::外国を使用しています:

$sftp->get('/tmp/data_log*', 'data_log' . $YYYYMMDD . 'log') 

/tmp/data_log*という名前のファイルがあります?または、/tmpのファイルがすべてdata_logで始まるようにしたいですか?

getメソッドでは、一度に1つのファイルしか取得できません。グローブは機能しません。 getforeachループに移動してみませんか?あなたが望むファイルが見えたら、それを入れてください。代わりに与えられたパターンに一致するすべてのファイルを転送しますget使用mget

foreach my $file (@{$ls}) { 
    print qq(Found file "$file" in directory\n); 

    # Is this the file we want to fetch? 

    if ($file eq $LOGFILE) { 
      print qq(Attempting to fetch "$file"\n); 
      $sftp->get("$LOGFILE") #I think you're only interested in this file 
       or die qq(Could not fetch file "$LOGFILE" from directory:) . $sftp->error; 
      print qq(Fetched file "$file"\n); 
    } 
} 
関連する問題