0

Net::SSH を使用してリモートでファイルを取得する必要がありますが、ファイルがリモートに存在しない場合、スクリプトが停止します。これを停止して、スクリプトを続行するにはどうすればよいですか?

eval {  
    my $login_output = $ssh->login($user, $pass);

    foreach $device (keys %{$deviceHashRef})
    {   
                    my $transfer_output = $scpe->scp("$host:/home/portal/runtime/portal_daemon/data/journal/2012.07/refrigeration.case.$device.hourly", '/tmp/poop/input');
    }
};

if($@)
{       
    print Dumper $@;
}

ありがとう、

トム

4

1 に答える 1

1

呼び出しを eval {} でラップすると、die() がキャッチされ、エラーを処理できます。

 my $transfer_output = eval { $scpe->scp("$host:/home/portal/runtime/portal_daemon/data/journal/2012.07/refrigeration.case.$device.hourly", '/tmp/poop/input') };
 if ($@) {
   my $err = $@;

   # you can parse the error message out of $err and build an error message
   if ($err =~ /not found/) {
      logger->err('the input file was not found on the remote server');
   }
   else {
     logger->err("file copy encountered a problem: $err");
   }
 }
于 2012-08-22T15:59:12.497 に答える