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

时间:2017-12-29 08:55:56

标签: perl hash

我知道这类话题已有很多问题,但据我所知(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) ;

stil给出

ARRAY(0x1c03a68)

1 个答案:

答案 0 :(得分:1)

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

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

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

my $untaggedInterface = $data{BridgeMode}{"Ten-GigabitEthernet1/0/5"}{Vlan100}{UntaggedPorts}[0];