数组 – 如何在Perl中迭代对哈希数组的引用?
发布时间:2020-12-15 23:22:11 所属栏目:大数据 来源:网络整理
导读:我引用了一个hases数组,我将其传递给perl脚本中的子例程 这是代码: sub mySub { (my $resultref) = @_; my @list = @$resultref; print Dumper(@list); foreach my $result (@list) { print Dumper($result); }} 这是输出: $VAR1 = [ { 'portName' = '1.1'
我引用了一个hases数组,我将其传递给perl脚本中的子例程
这是代码: sub mySub { (my $resultref) = @_; my @list = @$resultref; print Dumper(@list); foreach my $result (@list) { print Dumper($result); } } 这是输出: $VAR1 = [ { 'portName' => '1.1','ips' => [ '192.168.1.242' ],'switchIp' => '192.168.1.20','macs' => [ '00:16:76:9e:63:47' ] },{ 'portName' => '1.10','ips' => [ '192.168.1.119','192.168.1.3' ],'macs' => [ 'd0:67:e5:f8:7e:7e','d0:67:e5:f8:7e:76' ] },]; $VAR1 = [ { 'portName' => '1.1',]; 循环将整个数组放入$result变量中.我尝试将其解除引用为@ $result [0]但没有成功. 如何单独循环这些哈希? 谢谢! 解决方法
Data::Dumper的Dumper函数的参数应该是引用.例如.:
use Data::Dumper; my @array = ([1,2,3],[11,22,33]); # Two-dimensional array print Dumper @array; # print array print Dumper @array; # print reference to array 输出: $VAR1 = [ 1,3 ]; $VAR2 = [ 11,33 ]; $VAR1 = [ [ 1,3 ],[ 11,33 ] ]; 第二个印刷品在一个变量中给出了整个结构.当你直接打印数组时,它会扩展到它的所有元素,所以… print Dumper @array; 相当于: print Dumper $array[0],$array[1],...,$array[$#array]; 所以,在你的情况下,只需: sub mySub { my ($resultref) = @_; print Dumper $resultref; } 访问内部变量: 只需看看Data :: Dumper的输出: $VAR1 = [ # bracket denotes start of an array ref { # curly brackets = hash ref 'portName' => '1.1',# hash ref ends,comma = new array element begins { # new hash ref 'portName' => '1.10',# end of hash ]; # end of array 这里要注意的重要一点是数组的所有元素,以及散列的所有值都是标量.因此,所有哈希和数组都可以轻松地分解为标量列表. for my $aref (@$resultref) { # starting array ref for my $aref2 (@$aref) { # second level array ref for my $href (@$aref2) # here begins the hash local $ = "n"; # add newline to print for simplicity print $href->{portName}; # printing a scalar print for @{$href_>{ips}}; # printing an array ref w post-script loop print $href->{switchIp}; print for @{$href->{macs}}; } } } 请注意使用箭头运算符取消引用引用.如果你有一个哈希或数组,你可以使用$array [0]或$hash {$key},但是通过使用引用,你可以“指向”引用中包含的地址:$array-> [0]或$hash-> {$key}. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |