perl - XML:: Dumper आउटपुट में गलत हैश संदर्भ का उपयोग कर



hash xml-parsing (1)

मैं 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' ),

समस्या यह है कि जब मैं एक्सएमएल के साथ एक्सएमएल में पार्स करता हूं: डम्पर यह 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>

नोट स्मृति _address = "0x295b5758"

तो जब option_settings हैश रेफरेंस पॉइंट को ईओएस ऑब्जेक्ट से वापस पढ़ते हैं: /

क्या 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>

मुझे लगता है कि आपके प्रोग्राम के साथ कुछ बंद है I :(





hashref