2012-01-27 41 views
1

私はNet :: FTPを使ってメインフレームまでファイルを転送していますが、私は障害条件をテストしています。Perl Net :: FTPのエラー理由

私のコードは次の行に沿って基本的には次のとおりです。私はを知っ

my $ftp = Net::FTP->new ("mainframe.com", Timeout => 20); 
    if (! $ftp) { 
      logMessage ("Could not connect to host: $!"); 
      return; 
    } 

    if (! $ftp->login ("paxdiablo", "demigodemporeroftheuniverse")) { 
      logMessage ("Could not log in to host: $!"); 
      $ftp->quit(); 
      return; 
    } 

    if (! $ftp->put ("myfile.txt", "'CANT.WRITE.TO.THIS'")) { 
      logMessage ("Could not put file: $!"); 
      $ftp->quit(); 
      return; 
    } 

私は、データを作成することができない私は、私がしようとすると、必要な権限を持っていますがないのでCANT.WRITE.TO.THISを設定表示されるメッセージは次のとおりです。

Could not put file: 

問題が何であったかは、$!には表示されません。私はNet::FTP docoで見てきたし、それが言うすべてがある:私も特定のエラーを取得する程度が何かを見つけることができません

put (LOCAL_FILE [, REMOTE_FILE ])

Put a file on the remote server. LOCAL_FILE may be a name or a filehandle. If LOCAL_FILE is a filehandle then REMOTE_FILE must be specified. If REMOTE_FILE is not specified then the file will be stored in the current directory with the same leafname as LOCAL_FILE.

Returns REMOTE_FILE or the generated remote filename if REMOTE_FILE is not given.

(のような$ftp->getLastError()か何か同様)。

私はどのようにしてユーザに通知できますか?転送に失敗しましたか?

以前の繰り返しでは、ファイルを置いてから再度取得し、コンテンツをローカルでチェックしました。私はむしろむしろではなく、は再び人々にそのようなクルージングコードを与えなければならない。 Net::FTPから

+0

$ftp->cwd("/pub") or die "Cannot change working directory ", $ftp->message; 

注意。その後、より具体的なエラーを示すRACFまたはACF2メッセージのJESLOGを解析します。 –

答えて

4

$ftp = Net::FTP->new("some.host.name", Debug => 0) 
    or die "Cannot connect to some.host.name: [email protected]" 

[email protected]。あなたがしようとすると、データセットCANT.WRITE.TO.THISを作成するために、FTPサーバ経由で小さなジョブを送信することができ$ftp->message

+0

Aarrgghh !!愚かなドコウ。サンプルコードの実際の記述セクションにmessage()の記述はありません。私はNet :: Cmdから見ると、それはそこから来るものですが、実際には継承していることを述べるべきです - 例えば、あなたのコード(例えば)を与えるように見えないことに気付きます。それでも、それはあなたのせいではなく、あなたは大いに手助けして+1し、受け入れます。 – paxdiablo