2016-04-07 26 views
0

Perl'de bir dilenciyim ve à blessed hash'dan bir değer elde etmeye çalışıyorum.Mübarek hash içinde bir değer mi arıyorsunuz

değer ip adresleri, sana dökülüyor ne olursa olsun hiçbir başarı ile

print $vm->guest->ipStack->dnsConfig->ipAddress; 

print $vm->guest->ipStack{dnsConfig}{ipAddress}; 


$VAR1 = [ 
    bless({ 

     "ipRouteConfig" => bless({ 

      "ipRoute" => [ 

       bless({ 
        "gateway" => bless({ 
         "device" => 0, 
         "ipAddress" => "10.*******" 
        }, 'NetIpRouteConfigInfoGateway'), 
        "network" => "0.0.0.0", 
        "prefixLength" => 0 
       }, 'NetIpRouteConfigInfoIpRoute'), 

       bless({ 
        "network" => "1***********", 
        "gateway" => bless({ 
         "device" => 0 
        }, 'NetIpRouteConfigInfoGateway'), 
        "prefixLength" => 23 
       }, 'NetIpRouteConfigInfoIpRoute'), 

       bless({ 
        "prefixLength" => 32, 
        "network" => "10**************", 
        "gateway" => bless({ 
         "device" => 0 
        }, 'NetIpRouteConfigInfoGateway') 
       }, 'NetIpRouteConfigInfoIpRoute'), 

       bless({ 
        "prefixLength" => 32, 
        "gateway" => bless({ 
         "device" => 0 
        }, 'NetIpRouteConfigInfoGateway'), 
        "network" => "1***********5" 
       }, 'NetIpRouteConfigInfoIpRoute'), 

       bless({ 
        "prefixLength" => 4, 
        "gateway" => bless({ 
         "device" => 0 
        }, 'NetIpRouteConfigInfoGateway'), 
        "network" => "224.0.0.0" 
       }, 'NetIpRouteConfigInfoIpRoute'), 

       bless({ 
        "gateway" => bless({ 
         "device" => 0 
        }, 'NetIpRouteConfigInfoGateway'), 
        "network" => "255.255.255.255", 
        "prefixLength" => 32 
       }, 'NetIpRouteConfigInfoIpRoute'), 

       bless({ 
        "prefixLength" => 64, 
        "network" => "fe80::", 
        "gateway" => bless({ 
         "device" => 0 
        }, 'NetIpRouteConfigInfoGateway') 
       }, 'NetIpRouteConfigInfoIpRoute'), 

       bless({ 
        "prefixLength" => 128, 
        "network" => "fe80::", 
        "gateway" => bless({ 
         "device" => 0 
        }, 'NetIpRouteConfigInfoGateway') 
       }, 'NetIpRouteConfigInfoIpRoute'), 

       bless({ 
        "prefixLength" => 8, 
        "network" => "ff00::", 
        "gateway" => bless({ 
         "device" => 0 
        }, 'NetIpRouteConfigInfoGateway') 
       }, 'NetIpRouteConfigInfoIpRoute') 
      ] 

     }, 'NetIpRouteConfigInfo'), 

     "dnsConfig" => bless({ 
      "dhcp" => 0, 
      "searchDomain" => [ 
       "france" 
      ], 
      "hostName" => "HOST", 
      "ipAddress" => [ 
       "10.60****", 
       "10.6*****", 
       "10.8*****" 
      ], 
      "domainName" => "france" 
     }, 'NetDnsConfigInfo') 

    }, 'GuestStackInfo') 
] 
+1

Bu sürümde vmware sdk sürümü nedir? Belgelerin var mı? Sorunuzu [değiştirebilir] ve Data :: Dumper çıkışı üreten kodu ekleyebilirsiniz. – simbabque

cevap

3

bir dizi değil, bir karma olduğunu denedik olduğunu. Bize Ayrıca düzgün

yardımcı olmak için bu bilgiyi erişmek için kendi yöntemlerini kullanarak edilmelidir mübarek nesnelerin yapısı, "arka kapıdan gitmiyor, olduğundan, Dumper çağrısını göstermek gerekir "ve doğrudan veri yapısıyla uğraşıyorlar. Maalesef GuestStackInfo ve NetDnsConfigInfo yüzden burada

  • yapısı $VAR1 ile anılan bazı notlar toplamak vardır aramalar uygun olabilir hangi yöntemi önermek edemez standart Perl türlerinden biri VMware sınıfları vardır ve bir GuestStackInfo nesne

  • GuestStackInfo nesne içeren tek öğeli bir dizi, bir NetIpRouteConfigInfo nesnesi ve bir NetDnsConfigInfo nesnesi içerir. Sana dediğim gibi ikinci ilgilenen varsayalım ve en yakın karma anahtar

  • ipAddress eleman IP adresine bir dizisi için referanstır NetDnsConfigInfo nesnede ipAddress olan "değer ip adresleri ise" -like dizeleri

sen sonra

my $addresses = $VAR1->[0]{dnsConfig}{ipAddress}; 

ve yazardı Bu diziyi erişmek için Böyle veri yapısı çevresinde alay yöntem çağrıları kullanarak değil edilmelidir - benim ilk yorumların almak not , hepsini yazdırmak

print "$_\n" for @$addresses; 

kullanmak Ama. Bu sınıflar için herhangi bir belge var mı?

+0

Teşekkür çalışıyor. Doküman sınıfları arayacağım. –

İlgili konular