我正在关注此示例Simple example of using data from a YAML configuration file in a Perl script
vihtorr @ w00w / var / www $ cat test.yaml
IPs: [500, 600, 200, 100]
vihtorr @ w00w / var / www $ cat yam2.pl
use strict;
use warnings;
use YAML::XS qw(LoadFile);
my $settings = LoadFile('test.yaml');
print "The IPs are ", $settings->{IPs};
我想知道谁在数组内迭代?
当我执行代码时我得到了
perl yam2.pl
The IPs are ARRAY(0x166e5e0)
感谢帮助一个菜鸟
答案 0 :(得分:9)
$settings->{IPs}
包含对数组的引用。使用
取消引用数组@{ $ref } # The whole thing
${ $ref }[$i] # One element
$ref->[$i] # One element
@{ $ref }[@i] # Array slice
所以你可以使用
访问数组@{ $settings->{IPs} }
你得到:
print "The IPs are ", join(', ', @{ $settings->{IPs} }), "\n";
你可能也会穿着
for my $ip (@{ $settings->{IPs} }) {
... do something with $ip ...
}
参考文献:
答案 1 :(得分:1)
ARRAY(0x166e5e0)输出显示$ settings-> {IPs}是一个数组引用。您必须取消引用它才能迭代:
for my $ip (@{$settings->{IPs}}) {
print $ip . "\n";
}
如果你需要做的只是打印,你可以使用join():
print join("\n", @{$settings->{IPs}});