了解 Data::Dumper 输出
Understanding Data::Dumper output
简单问题:
use warnings;
use XML::Simple;
use Data::Dumper;
my $file='test.osm';
my $test_data = XMLin( $file );
print Dumper( $test_data );
my @way_node_refs=$test_data->{'way'}->{'nd'};
print Dumper( @way_node_refs );
print( @way_node_refs[1]->{'ref'} );ere
它有以下输出。没有给出第一个转储,因为它无关紧要。
$VAR1 = [
{
'ref' => '453966480'
},
{
'ref' => '453966490'
},
{
'ref' => '453966482'
},
{
'ref' => '453966130'
},
{
'ref' => '453966143'
},
{
'ref' => '453966480'
}
];
如何使用键 ref 访问值。我不知道如何解释大括号。
这称为散列数组。如果 $array
包含数据,则以下将起作用:
[]
是匿名数组引用,而{}
是匿名散列引用。检查 perlref
.
for (@{ $array }) {
print $_ -> {ref},"\n";
}
延伸阅读:
- 使用
Arrow operator(->)
- 最适合从 arrayref 或 hashref 访问单个项目。
- 使用
@ { }
- 适用于遍历数组引用。
编辑:
现在在你的编辑之后,很明显你想要这样的东西:
for (@way_node_refs) {
print $_ -> {ref},"\n";
}
您有一个数组引用,其中数组内的值是散列引用。要访问单个值,请使用箭头运算符 ->
.
print $foo->[0]->{ref};
print $foo->[1]->{ref};
或者您可以遍历它们。
foreach my $elem ( @{ $foo } ) {
print Dumper $elem;
print $elem->{ref};
}
您 could even sort
按 ref 键值的字母顺序排列它们。
my @sorted = sort { $a->{ref} cmp $b->{ref} } @$foo; # note @sorted is an array
有关数据结构和引用的更多详细信息,请参阅 perlref, perlreftut and perldsc。
简单问题:
use warnings;
use XML::Simple;
use Data::Dumper;
my $file='test.osm';
my $test_data = XMLin( $file );
print Dumper( $test_data );
my @way_node_refs=$test_data->{'way'}->{'nd'};
print Dumper( @way_node_refs );
print( @way_node_refs[1]->{'ref'} );ere
它有以下输出。没有给出第一个转储,因为它无关紧要。
$VAR1 = [
{
'ref' => '453966480'
},
{
'ref' => '453966490'
},
{
'ref' => '453966482'
},
{
'ref' => '453966130'
},
{
'ref' => '453966143'
},
{
'ref' => '453966480'
}
];
如何使用键 ref 访问值。我不知道如何解释大括号。
这称为散列数组。如果 $array
包含数据,则以下将起作用:
[]
是匿名数组引用,而{}
是匿名散列引用。检查 perlref
.
for (@{ $array }) {
print $_ -> {ref},"\n";
}
延伸阅读:
- 使用
Arrow operator(->)
- 最适合从 arrayref 或 hashref 访问单个项目。 - 使用
@ { }
- 适用于遍历数组引用。
编辑:
现在在你的编辑之后,很明显你想要这样的东西:
for (@way_node_refs) {
print $_ -> {ref},"\n";
}
您有一个数组引用,其中数组内的值是散列引用。要访问单个值,请使用箭头运算符 ->
.
print $foo->[0]->{ref};
print $foo->[1]->{ref};
或者您可以遍历它们。
foreach my $elem ( @{ $foo } ) {
print Dumper $elem;
print $elem->{ref};
}
您 could even sort
按 ref 键值的字母顺序排列它们。
my @sorted = sort { $a->{ref} cmp $b->{ref} } @$foo; # note @sorted is an array
有关数据结构和引用的更多详细信息,请参阅 perlref, perlreftut and perldsc。