【发布时间】:2014-06-16 22:54:55
【问题描述】:
我正在编写一个子程序,它使用XML::Simple 模块从配置文件中提取信息。
XML 文件具有以下结构
<main>
<server hostname="blahblah" ... more_attributes="more"/>
<server etc./>
<server etc./>
</main>
代码运行良好。它按预期将 XML 数据放入嵌套散列中。但是,当我想使用当前系统的 hostname 将一台服务器与其他服务器隔离时,我遇到了问题。
我认为这条线
my %systemHash = %{$xmlObject->{SERVER}->{`hostname`}};
应该将当前机器的主机名插入到最后一组括号中。但是当执行我得到的代码时
Can't use an undefined value as a HASH reference
【问题讨论】:
-
能分享一下读取XML的代码吗?有几个选项可以改变 XML::Simple 的行为。
-
澄清一下:使用默认值,
XMLin给我一个哈希数组的哈希,而不是嵌套的哈希。 -
@JimDavis:最重要的是遵守
XML::Simple模块的作者格兰特麦克莱恩的意愿,他说“在新代码中使用这个模块不鼓励” -
顺便说一句,Perl 核心模块
Sys::Hostname导出本机函数hostname,无需使用反引号或外部命令即可工作
标签: xml perl xml-simple