gpt4 book ai didi

perl - XML::Dumper 在输出中使用错误的哈希引用

转载 作者:行者123 更新时间:2023-12-04 22:36:29 25 4
gpt4 key购买 nike

我正在尝试使用 XML::Dumper 序列化以下数据结构

'options_settings' => {
'telnet.distinct.enable' => {
'text' => 'Option telnet.distinct.enable needs to be set to \'on\' as of
workaround for Bug 476803',
'severity' => '7'
}
},
'EOS_details' => {
'338' => bless( {
'info' => '<a href="https://support.netapp.com/info/communications/ECMP1110462.html " target="_blank"> CPC-0705-02 </a>',
'count' => '48',
'ASUP_id' => 'AE20121117202086',
'part' => 'ESH2 - X5511A-RC, X5511-RC-C',
'category' => 'I/O Module',
'EOS_date' => '06/02/2013',
'severity' => '8'
}, 'EOSObject' ),

问题是,当我使用 XML:Dumper 将其解析为 xml 时,它对 2 个单独的哈希引用使用相同的内存地址:
  <item key="338">
<hashref blessed_package="EOSObject" memory_address="0x295b5758">
<item key="ASUP_id">AE20121117165273</item>
<item key="EOS_date">06/02/2013</item>
<item key="category">I/O Module</item>
<item key="count">48</item>
<item key="info">&lt;a href=&quot;https://support.netapp.com/info/communications/ECMP1110462.html &quot; target=&quot;_blank&quot;&gt; CPC-0705-02 &lt;/a&gt;</item>
<item key="part">ESH2 - X5511A-RC, X5511-RC-C</item>
<item key="severity">8</item>
</hashref>
</item>
</hashref>
<item key="options_settings">
<hashref memory_address="0x295b5320">
<item key="telnet.distinct.enable">
<hashref memory_address="0x295b5758">
</hashref>
</item>
</hashref>
</item>

请注意 memory_address="0x295b5758"。

因此,当从文件中回读时,option_settings 哈希引用指向 EOS 对象:/

这是 XML::Dumper 中的错误还是我做错了什么?使用最新的 XML::Dumper 0.81

附言
我试图在主脚本之外重现它并且它有效。
我仍然无法理解主脚本中的数据是如何被破坏的。
这是使用 XML::Dumper 的代码:
    DEBUG("Before serialization: " . Data::Dumper::Dumper($result));
my $dump = new XML::Dumper;
my $dump_test = new XML::Dumper;
my $test_xml = $dump_test->pl2xml ($result);
DEBUG("After serialization in memory: " . Data::Dumper::Dumper($test_xml));
$dump->pl2xml( $result, $filename );

结果打印正确。 “options_settings”是单独的条目。在 $test_xml 中它已经与 EOS_details 混淆了

最佳答案

我正在尝试复制您的问题,但没有成功。

#!/usr/bin/perl -Tw

use strict;
use warnings;
use XML::Dumper;

my $eos = bless {
'info' => '<a href="https://support.netapp.com/info/communications/ECMP1110462.html " target="_blank"> CPC-0705-02 </a>',
'count' => '48',
'ASUP_id' => 'AE20121117202086',
'part' => 'ESH2 - X5511A-RC, X5511-RC-C',
'category' => 'I/O Module',
'EOS_date' => '06/02/2013',
'severity' => '8'
}, 'EOSObject';

my %data = (
'options_settings' => {
'telnet.distinct.enable' => {
'text' => 'Option telnet.distinct.enable needs to be set to \'on\' as of
workaround for Bug 476803',
'severity' => '7'
}
},
'EOS_details' => { 338 => $eos }
);

print pl2xml( \%data );

我的程序的输出:
<perldata>
<hashref memory_address="0x253fb18">
<item key="EOS_details">
<hashref memory_address="0x2517e08">
<item key="338">
<hashref blessed_package="EOSObject" memory_address="0x24f9998">
<item key="ASUP_id">AE20121117202086</item>
<item key="EOS_date">06/02/2013</item>
<item key="category">I/O Module</item>
<item key="count">48</item>
<item key="info">&lt;a href=&quot;https://support.netapp.com/info/communications/ECMP1110462.html &quot; target=&quot;_blank&quot;&gt; CPC-0705-02 &lt;/a&gt;</item>
<item key="part">ESH2 - X5511A-RC, X5511-RC-C</item>
<item key="severity">8</item>
</hashref>
</item>
</hashref>
</item>
<item key="options_settings">
<hashref memory_address="0x2517688">
<item key="telnet.distinct.enable">
<hashref memory_address="0x2517598">
<item key="severity">7</item>
<item key="text">Option telnet.distinct.enable needs to be set to &apos;on&apos; as of
workaround for Bug 476803</item>
</hashref>
</item>
</hashref>
</item>
</hashref>
</perldata>

我倾向于认为你的程序有问题。 :(

关于perl - XML::Dumper 在输出中使用错误的哈希引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13528375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com