-1
私は本質的にルータにログインし、コマンドを実行し、コマンド出力を解析して、Peer status
とPeer ip
を返しました。
関数は値を期待どおりに返します。ステータスとピアIPに加えて、もし私が3つの値を返そうとしているならば、例えば$ session_id、$ session_state、$ timeと答えます。ハッシュでどうすればいいですか?関数が5つの値すべてをハッシュで返すようにしたい。ハッシュの関数から複数の値を返します
sub session_status {
my ($self,$interface_name) = @_;
my $status = 0;
my $peer_ip = 0;
#command to chek the status
my $cmd = 'show crypto session interface ' . $interface_name;
$self->_login();
my $tunnel_status = $self->exec($cmd);
#Regex to match the 'tunnel status' and 'peer ip' string in the cmd output
foreach my $line ( $tunnel_status) {
if ($line =~ m/Session\s+status:\s+(.*)/) {
$status = $1;
}
if ($line =~ m/Peer:\s+(\d+.\d+.\d+.\d+)/) {
$peer_ip = $1;
}
}
return ($status,$peer_ip);
}
ファンクションコール:
my ($tunnel_status, $peer_ip) = $sshobject->session_status("Tunnel1");
print "TUNNEL STATUS : $tunnel_status\n";
print "PEER IP : $peer_ip\n";
出力:
TUNNEL STATUS : DOWN
PEER IP : 100.81.1.42
関数でハッシュを定義するにはどうすればよいですか? – virat
@virat Martinは、あなたに必要なものすべてを与えてくれました(+1)!彼のreturn文は、5つのキーと値のペアを持つ匿名ハッシュへの参照を返します。明示的に定義することなく '(...)'リストを返したように、明示的に定義することなくハッシュリファレンスを返しました。 – PerlDuck
ありがとう、@PerlDog! –