ILi*_*cos 1 perl hash xml-simple
我正在努力使用Perl中的哈希声明:
my %xmlStructure = {
hostname => $dbHost,
username => $dbUsername,
password => $dbPassword,
dev_table => $dbTable,
octopus => {
alert_dir => $alert_dir,
broadcast_id => $broadcast_id,
system_id => $system_id,
subkey => $subkey
}
};
Run Code Online (Sandbox Code Playgroud)
我一直在谷歌搜索,但我无法提出解决方案,我所做的每一个修改都会在另一个警告或我不想要的结果中结束.
Perl投诉与以下文字:
Reference found where even-sized list expected at ./configurator.pl line X.
Run Code Online (Sandbox Code Playgroud)
我这样做,因为我想使用该模块:
XML::Simple
Run Code Online (Sandbox Code Playgroud)
为了生成具有以下结构的XML文件:
<settings>
<username></username>
<password></password>
<database></database>
<hostname></hostname>
<dev_table></dev_table>
<octopus>
<alert_dir></alert_dir>
<broadcast_id></broadcast_id>
<subkey></subkey>
</octopus>
</settings>
Run Code Online (Sandbox Code Playgroud)
所以有点像:
my $data = $xmlFile->XMLout(%xmlStructure);
warn Dumper($data);
Run Code Online (Sandbox Code Playgroud)
将显示后一个xml样本结构.
更新:
我忘了提到我也尝试使用括号而不是花括号作为哈希引用,虽然它似乎工作,但XML文件编写不正确:我最终得到以下结构:
<settings>
<dev_table>5L3IQWmNOw==</dev_table>
<hostname>gQMgO3/hvMjc</hostname>
<octopus>
<alert_dir>l</alert_dir>
<broadcast_id>l</broadcast_id>
<subkey>l</subkey>
<system_id>l</system_id>
</octopus>
<password>dZJomteHXg==</password>
<username>sjfPIQ==</username>
</settings>
Run Code Online (Sandbox Code Playgroud)
这不完全是错的,但我不确定随着XML文件变大,我是否会遇到问题.凭证使用RC4算法加密,但我在base 64编码,以避免任何特殊字符的不当行为.谢谢
dgw*_*dgw 13
{}用于哈希引用.声明哈希使用正常括号():
my %xmlStructure = (
hostname => $dbHost,
username => $dbUsername,
password => $dbPassword,
dev_table => $dbTable,
octopus => {
alert_dir => $alert_dir,
broadcast_id => $broadcast_id,
system_id => $system_id,
subkey => $subkey
}
);
Run Code Online (Sandbox Code Playgroud)
另请参见perldoc perldsc - Perl Data Structures Cookbook.
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |