-2

次のコードがあります。

99      if($host =~ /R3|R6/) {
100         #task 1.2 3 points
101         try {
102             my $ns = "http://xml.juniper.net/junos/$ver/junos-interface";
103             my $out = $jnx->get_interface_information(interface_name => "ae10")->toString();
104             my @ex_path = (["up","//x:oper-status"],["up","//x:admin-status"]);
105             my $ret = Check->checkt($ns,$out,@ex_path);
106             for(@{$ret}) {
107                 my $feed;
108                 $tasks[2]->[3]=$tasks[2]->[2] if $_->[0] == 0;
109                 $feed = $_->[2] if $_->[2];
110                 $feed = "Not Set" unless $_->[2];
111                 push @{$tasks[2]},"$host AE10 is currently $feed" if $_->[0] == 0;
112             }
113             my $datax = XML::LibXML::XPathContext->new(XML::LibXML->load_xml(string => $out));
114             $datax->registerNs("x",$ns);
115             my $minlinks = $datax->findvalue("//x:minimum-links-in-aggregate");
116             if($minlinks < 2) {$tasks[2]->[3]=$tasks[2]->[2]; push @{$tasks[2]},"$host does not currently have the minimum links set";}
117      } catch {
118             $tasks[2]->[3]=$tasks[2]->[2];
119             push @{$tasks[2]},"$host AE10 is currently not available";
120      };
121      }

103行目で生成された次のエラーをキャッチしようとしています:

Can't call method "toString" on an undefined value at file.pm line 103, <> line 2.

残りのtryブロックをスキップし、catchブロックを実行してスクリプトを続行しますが、try/catchがスクリプトに追加された後でもそうしません。

誰も私がこれを行う方法を知っていますか?

4

1 に答える 1

1

気にしないでください。パッケージ定義の上で Try::Tiny を宣言していました。また、使用していたベンダー モジュールに付属する ssh モジュールでエラーが発生するという問題がありました。

于 2012-12-31T20:07:22.033 に答える