如何使用perl脚本从XML文件中读取多个值? 我有像xml文件:
<Provisioning>
<Appliance>
<ID>1</ID>
<SiteID></SiteID>
<IPAddress>10.52.32.230</IPAddress>
</Appliance>
<Appliance>
<ID>1</ID>
<SiteID></SiteID>
<IPAddress>10.52.32.530</IPAddress>
</Appliance>
<Appliance>
<ID>1</ID>
<SiteID></SiteID>
<IPAddress>10.52.32.730</IPAddress>
</Appliance>...
</Provisioning>
我编写的代码如下:
use XML::Simple;
use Data::Dumper;
my $xml = new XML::Simple;
my $peermas = $xml->XMLin($masapplications);
print "file contents: $peermas \n";
print Dumper($peermas);
@masipaddr =+ $peermas->{Appliance}->{IPAddress}; #{Provisioning}->{Appliance}->{IPAddress};
print "The MAS ip: @masipaddr \n";
我是perl脚本的新手,我的代码只能读取一个IP地址,而不是剩余的2个。 那么在这种情况下该怎么办?请尽快回复...... 提前谢谢。
答案 0 :(得分:1)
您已在$peermas
中获得所需的所有信息。但是,如果您需要IP地址阵列,您可以使用:
my @massipaddr = map { $_->{IPAddress} } @{ $peermas->{Appliance} };
此映射在哈希$peermas->{Appliance}
数组上进行迭代,并将每个IP地址从@massipaddr
推送到其中。
答案 1 :(得分:0)
或许这样的事情:
#!/usr/bin/perl
use strict;
use warnings;
use XML::Simple;
my $xml = join '', <DATA>;
my $peermas = XMLin($xml);
foreach (@{$peermas->{Appliance}}) {
print $_->{IPAddress}. "\n";
}
__DATA__
<Provisioning>
<Appliance>
<ID>1</ID>
<SiteID></SiteID>
<IPAddress>10.52.32.230</IPAddress>
</Appliance>
<Appliance>
<ID>1</ID>
<SiteID></SiteID>
<IPAddress>10.52.32.530</IPAddress>
</Appliance>
<Appliance>
<ID>1</ID>
<SiteID></SiteID>
<IPAddress>10.52.32.730</IPAddress>
</Appliance>...
</Provisioning>