【发布时间】:2015-12-16 09:37:23
【问题描述】:
我是 Perl 的新手。我正在尝试为 xml 文件中的每个条目循环以执行一项任务,但它因“不是第 9 行的数组引用”而死。
我的脚本是
#!/usr/bin/perl
# use module
use XML::Simple;
# create object
$xml = new XML::Simple;
# read XML file
$data = $xml->XMLin("data.xml");
# access XML data
foreach my $entry (@{$data->{entry}}){
print $entry->{'source-translation'}->{'static-ip'}-{'translated-address'};
}
我的 XML 文件数据是
<?xml version="1.0"?>
<config version="6.0.0" urldb="paloaltonetworks">
<entry name="DROP NAT">
<source-translation>
<static-ip>
<bi-directional>yes</bi-directional>
<translated-address>192.91.75.129</translated-address>
</static-ip>
</source-translation>
<to>
<member>Outside</member>
</to>
<from>
<member>DROP</member>
</from>
<source>
<member>192.91.66.72</member>
</source>
<destination>
<member>any</member>
</destination>
<service>any</service>
<description>NAT for DROP FTP Server</description>
<to-interface>ethernet1/1</to-interface>
<nat-type>ipv4</nat-type>
</entry>
<entry name="SDROP NAT">
<source-translation>
<static-ip>
<bi-directional>yes</bi-directional>
<translated-address>192.91.75.154</translated-address>
</static-ip>
</source-translation>
<to>
<member>Outside</member>
</to>
<from>
<member>DROP</member>
</from>
<source>
<member>192.91.66.79</member>
</source>
<destination>
<member>any</member>
</destination>
<service>any</service>
<description>NAT for SFTP server SDROP</description>
<to-interface>ethernet1/1</to-interface>
<nat-type>ipv4</nat-type>
</entry>
</config>
我想在每个条目中列出已翻译的地址。假设有很多这样的条目。请帮帮我。
【问题讨论】:
-
use Data::Dumper; print Dumper $data; -
您的脚本只有 11 行。 13号线是哪一条?
-
注意:
'translated-address'前面有一个减号可能你的意思是->?