アプリ版:「スタンプのみでお礼する」機能のリリースについて

Net::SSH::Perlを使って、以下のようにリモートマシン上のコマンドを実行しています。

my $ssh = Net::SSH::Perl->new("host");
$ssh->login("user", "pass");
($out, $err, $exit) = $ssh->cmd("command");

"command"に失敗した場合は、$errにエラー内容が格納されますが、hostやuser、passが間違っていた場合は、Permission deniedとなって、プログラムが終了してしまいます。
hostやuser、passの間違いで$ssh->cmdを失敗した場合にエラーを取得する方法があれば教えてください。

A 回答 (2件)

#1 です。



> eval( my($out, $err, $exit) = $ssh->cmd("df") );
> print "error: $@\n" if ($@);

ん? eval って

eval {
my($out, $err, $exit) = $ssh->cmd("df")
};
print "error: $@\n" if ($@);

って、使い方をした方が。

「実用Perlプログラミング」の5章 eval によると、こんな使い方になっています。
    • good
    • 0
この回答へのお礼

ありがとうございます。
なんとか、考えているものが作れそうです。

お礼日時:2004/05/09 01:29

試していませんが、evalに閉じ込めて実行することはできませんか?

この回答への補足

こういうことでしょうか?

eval( my($out, $err, $exit) = $ssh->cmd("df") );
print "error: $@\n" if ($@);

試して見ましたが、errorを表示せずに"Permission denied"となってしまいました。

補足日時:2004/04/30 16:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!