Bir komutu yürüten, ifadeyi normal ifadeye göre ayrıştıran ve iki değer, durum ve ip döndüren bir işlev yazdım. İşlev çağrısı, değerleri beklendiği gibi döndürür. Bir skaler döndürmek yerine, hash ref dönmek istiyorum. Birisi bana aşağıdaki işlevi için nasıl bir ref ref dönüşü yapacağını söyleyebilir mi?dönüş hash ref işlevindeki bir işlevden döndürme
sub status {
my ($self,$int) = @_;
my $status = 0;
my $ip = 0;
my $cmd = 'cisco ios command ' . $interface;
my $out = $self->{sshObj}->exec($cmd);
foreach my $line ( $out) {
if ($line =~ m/Session\s+status:\s+(.*)/) {
$status = $1;
}
if ($line =~ /(\d+.\d+.\d+.\d+)/) {
$ip = $1;
}
}
return ($status,$ip);
}
işlev çağrısı: Yukarıda bir açıklama açıklanan benim şüphelerine Apart
my ($status, $ip) =
$self->{'$tunnel_obj'}->status($self->{'outer_t_1'});
INFO ("status : $status");
INFO ("ip : $ip");
Output :
status : UP
ip : 172.10.78.33
olacağını size
ilgileniyor modülleri ne olduğunu söylemek sadece doğru yapabilir! Fonksiyonel kodu tek başına bırakıp skaler'i hash'a çevirmek için bir fonksiyon ekleyeceğim. Bunun bir cevap olmadığını biliyorum, ancak çalışma kodunuzu sağlam tutuyor. – Sparky256
@ Sparky256 Birden çok değer döndürmek istiyorsam, skaler kullanmak için iyi bir fikir olduğunu düşünmüyorum. Sanırım hash ref iyi bir seçenek olurdu. – nims
Bu senin gerçek kodun mu? '$ Self' nedir? Ve özellikle, 'out' nedir? Döngünümün $ satırını ($ out) 'tam olarak bir kez yürütecek, böylece döngü gerekmiyor. Beklediğin bu mu? – Borodin