Perl打印哈希给出了ARRAY(xxxxxxx)

问题描述 投票:-1回答:1

我知道这个问题已经有很多问题,但据我所知(perl初学者,所以我可能错了),我没有使用数组,所以我不明白这个输出来自哪里

$VAR1 = {
  'BridgeMode' => {
    'Ten-GigabitEthernet1/0/5' => {
      'Description' => 'poort1',
      'Duplex' => 'F(a)',
      'Interface' => 'Ten-GigabitEthernet1/0/5',
      'Link' => 'UP',
      'PVID' => '100',
      'Speed' => '10G(a)',
      'Type' => 'A',
      'Vlan100' => {
        'UntaggedPorts' => [
          'Ten-GigabitEthernet1/0/5'
        ]
      },
      'vlanID' => [
        'Vlan100'
      ]
    },

以上是我的翻斗车的内容,这是我的打印声明:

my $untaggedInterface = $data{BridgeMode}{"Ten-GigabitEthernet1/0/5"}{Vlan100}{UntaggedPorts} ;
print "Untagged: $untaggedInterface \n" ;

我希望print语句会打印“Ten-GigabitEthernet1 / 0/5”,但它会显示:

Untagged: ARRAY(0x24a8ec0)

编辑 - 可能存在标记和未标记:

$VAR1 = {
  'BridgeMode' => {
    'Ten-GigabitEthernet1/0/12' => {
      'Description' => 'poort5',
      'Duplex' => 'F(a)',
      'Interface' => 'Ten-GigabitEthernet1/0/12',
      'Link' => 'UP',
      'PVID' => '100',
      'Speed' => '10G(a)',
      'Type' => 'H',
      'Vlan100' => {
        'UntaggedPorts' => [
          'Ten-GigabitEthernet1/0/12'
        ]
      },
      'Vlan107' => {
        'TaggedPorts' => [
          'Ten-GigabitEthernet1/0/12'
        ]
      },

编辑:打印数组的内容

my @untaggedInterface = $data{BridgeMode}{"Ten-GigabitEthernet1/0/5"}{Vlan100}{UntaggedPorts} ;
print join(", ", @untaggedInterface) ;

风格给出

ARRAY(0x1c03a68)
perl hash
1个回答
1
投票

如果你有以下内容,你会得到预期的结果,即字符串而不是字符串数组:

'UntaggedPorts' => 'Ten-GigabitEthernet1/0/12'

否则,您必须指定数组元素的索引:

my $untaggedInterface = $data{BridgeMode}{"Ten-GigabitEthernet1/0/5"}{Vlan100}{UntaggedPorts}[0];
© www.soinside.com 2019 - 2024. All rights reserved.