bharathinc has asked for the wisdom of the Perl Monks concerning the following question:
Hi, I have the below code to sort child elements based on attribute. The code uses TWIG inbuilt method sort_children_on_value. Though the fuctionality works, I am getting below error " Use of uninitialized value in string comparison (cmp) at C:/Perl/site/lib/XML/Twig.pm line 8820. " If the test XML is bigger one this error appears more than 200 times. Could any one help me in resolving this. Thank you in advance.
#!/bin/perl -w use strict; use XML::Twig; my $twig= XML::Twig->new(pretty_print=>'indented'); #$twig->parsefile("OpsbankII-im1.xml"); $twig->parse(\*DATA); my $root=$twig->root; $root->first_child->sort_children_on_att("type"); sort_my_kids($root); $twig->print; #---------- sub sort_my_kids{ my $me = shift; $me->sort_children_on_value; foreach my $kid($me->children){ sort_my_kids($kid); # Recursive } } __DATA__ <root> <enhancement> <descriptorgroup> <descriptors type="MED" controlled="y"> <descriptor> <mainterm weight="b" candidate="n"> algorithm </mainterm> </descriptor> <descriptor> <mainterm weight="a" candidate="n"> colon diverticulosis </mainterm> <link> surgery </link> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> disease severity </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> human </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> recurrent disease </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> review </mainterm> </descriptor> <descriptor> <mainterm weight="a" candidate="n"> sigmoidectomy </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> surgical technique </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> treatment indication </mainterm> </descriptor> </descriptors> </descriptorgroup> <classificationgroup> <classifications type="ASJC"> <classification> <classification-code> 2715 </classification-code> </classification> <classification> <classification-code> 2746 </classification-code> </classification> </classifications> </classificationgroup> </enhancement> <enhancement> <descriptorgroup> <descriptors type="DRG" controlled="y"> <descriptor> <mainterm weight="a" candidate="n"> DNA binding protein </mainterm> <link> endogenous compound </link> </descriptor> <descriptor> <mainterm weight="a" candidate="n"> DNA polymerase </mainterm> <link> endogenous compound </link> </descriptor> <descriptor> <mainterm weight="a" candidate="n"> initiation factor </mainterm> <link> endogenous compound </link> </descriptor> <descriptor> <mainterm weight="a" candidate="n"> plasmid DNA </mainterm> <link> endogenous compound </link> </descriptor> </descriptors> <descriptors type="MED" controlled="y"> <descriptor> <mainterm weight="b" candidate="n"> animal cell </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> article </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> chromatin </mainterm> </descriptor> <descriptor> <mainterm weight="a" candidate="n"> DNA replication </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> DNA replication origin </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> DNA supercoiling </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> egg </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> nonhuman </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> plasmid </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> Xenopus laevis </mainterm> </descriptor> </descriptors> <descriptors type="SPC" controlled="y"> <descriptor> <mainterm candidate="n"> Animalia </mainterm> </descriptor> <descriptor> <mainterm candidate="n"> Eukaryota </mainterm> </descriptor> <descriptor> <mainterm candidate="n"> Xenopus laevis </mainterm> </descriptor> </descriptors> </descriptorgroup> <classificationgroup> <classifications type="ASJC"> <classification> <classification-code> 1312 </classification-code> </classification> </classifications> </classificationgroup> <chemicalgroup> <chemicals source="esbd"> <chemical> <chemical-name> 37217-33-7 </chemical-name> <cas-registry-number> DNA polymerase </cas-registry-number> </chemical> </chemicals> </chemicalgroup> </enhancement> <enhancement> <descriptorgroup> <descriptors type="DRG" controlled="y"> <descriptor> <mainterm weight="b" candidate="n"> acetonitrile derivative </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> benzene derivative </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> cyclohexane derivative </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> lactic acid derivative </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> lactone derivative </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> organic solvent </mainterm> </descriptor> <descriptor> <mainterm weight="a" candidate="n"> poly(3 hydroxybutyric acid) </mainterm> <link> endogenous compound </link> </descriptor> <descriptor> <mainterm weight="a" candidate="y"> poly(3 hydroxybutyric acid) depolymerase </mainterm> <link> endogenous compound </link> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> polyhydroxyalkanoic acid </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> unclassified drug </mainterm> </descriptor> </descriptors> <descriptors type="MED" controlled="y"> <descriptor> <mainterm weight="b" candidate="n"> article </mainterm> </descriptor> <descriptor> <mainterm weight="a" candidate="n"> catalysis </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> enzyme activity </mainterm> </descriptor> <descriptor> <mainterm weight="a" candidate="n"> esterification </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> hydrolysis </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> nonhuman </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> polymerization </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> Pseudomonas </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="y"> pseudomonas lemoignei </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> reaction analysis </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> stereochemistry </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> synthesis </mainterm> </descriptor> </descriptors> </descriptorgroup> <classificationgroup> <classifications type="ASJC"> <classification> <classification-code> 1605 </classification-code> </classification> </classifications> </classificationgroup> <chemicalgroup> <chemicals source="esbd"> <chemical> <chemical-name> 26063-00-3 </chemical-name> <cas-registry-number> poly(3 hydroxybutyric acid) </cas-registry-number> </chemical> </chemicals> </chemicalgroup> </enhancement> <enhancement> <descriptorgroup> <descriptors type="MED" controlled="y"> <descriptor> <mainterm weight="b" candidate="n"> axillary lymph node </mainterm> </descriptor> <descriptor> <mainterm weight="a" candidate="n"> breast carcinoma </mainterm> <link> diagnosis </link> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> cancer staging </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> cancer surgery </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> human </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> lymph node dissection </mainterm> </descriptor> <descriptor> <mainterm weight="a" candidate="n"> lymph node metastasis </mainterm> <link> complication </link> <link> surgery </link> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> priority journal </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> prognosis </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> review </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> treatment outcome </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> treatment planning </mainterm> </descriptor> </descriptors> </descriptorgroup> <classificationgroup> <classifications type="ASJC"> <classification> <classification-code> 1306 </classification-code> </classification> <classification> <classification-code> 2730 </classification-code> </classification> </classifications> </classificationgroup> </enhancement> <enhancement> <descriptorgroup> <descriptors type="MED" controlled="y"> <descriptor> <mainterm weight="b" candidate="n"> aged </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> article </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> electrode </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> female </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> heart atrium </mainterm> </descriptor> <descriptor> <mainterm weight="a" candidate="n"> heart pacing </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> heart ventricle </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> human </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> implantation </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> longevity </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> major clinical study </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> male </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> medical instrumentation </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> survival </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> treatment indication </mainterm> </descriptor> </descriptors> </descriptorgroup> <classificationgroup> <classifications type="ASJC"> <classification> <classification-code> 1314 </classification-code> </classification> <classification> <classification-code> 2705 </classification-code> </classification> </classifications> </classificationgroup> <manufacturergroup> <manufacturers type="MNV"> <manufacturer country="usa"> Intermedics </manufacturer> </manufacturers> </manufacturergroup> <tradenamegroup> <tradenames type="TNV"> <trademanuitem> <tradename> ThinLine bipolar pacing lead </tradename> <manufacturer country="usa"> Intermedics </manufacturer> </trademanuitem> </tradenames> </tradenamegroup> </enhancement> <enhancement> <descriptorgroup> <descriptors type="DRG" controlled="y"> <descriptor> <mainterm weight="b" candidate="n"> C reactive protein </mainterm> <link> endogenous compound </link> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> fibrinogen </mainterm> <link> endogenous compound </link> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> heat shock protein 60 </mainterm> <link> endogenous compound </link> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> high density lipoprotein cholesterol </mainterm> <link> endogenous compound </link> </descriptor> <descriptor> <mainterm weight="a" candidate="n"> roxithromycin </mainterm> <link> drug therapy </link> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> triacylglycerol </mainterm> <link> endogenous compound </link> </descriptor> </descriptors> <descriptors type="MED" controlled="y"> <descriptor> <mainterm weight="b" candidate="n"> angiography </mainterm> </descriptor> <descriptor> <mainterm weight="a" candidate="n"> atherosclerosis </mainterm> <link> etiology </link> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> bacterium isolation </mainterm> </descriptor> <descriptor> <mainterm weight="a" candidate="n"> chlamydiasis </mainterm> <link> drug therapy </link> </descriptor> <descriptor> <mainterm weight="a" candidate="n"> Chlamydophila pneumoniae </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> controlled study </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> disease association </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> endothelium injury </mainterm> <link> diagnosis </link> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> human </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> human cell </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> human tissue </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> immunoregulation </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> pathogenesis </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> priority journal </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> review </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> risk factor </mainterm> </descriptor> <descriptor> <mainterm weight="b" candidate="n"> seroepidemiology </mainterm> </descriptor> </descriptors> </descriptorgroup> <classificationgroup> <classifications type="ASJC"> <classification> <classification-code> 2705 </classification-code> </classification> </classifications> </classificationgroup> <chemicalgroup> <chemicals source="esbd"> <chemical> <chemical-name> 9001-32-5 </chemical-name> <cas-registry-number> fibrinogen </cas-registry-number> </chemical> </chemicals> <chemicals source="esbd"> <chemical> <chemical-name> 9007-41-4 </chemical-name> <cas-registry-number> C reactive protein </cas-registry-number> </chemical> </chemicals> <chemicals source="esbd"> <chemical> <chemical-name> 80214-83-1 </chemical-name> <cas-registry-number> roxithromycin </cas-registry-number> </chemical> </chemicals> </chemicalgroup> </enhancement> </root>
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Use of uninitialized value in string comparison (cmp)
by moritz (Cardinal) on Mar 19, 2010 at 07:22 UTC | |
|
Re: Use of uninitialized value in string comparison (cmp)
by pajout (Curate) on Mar 19, 2010 at 09:30 UTC | |
by bharathinc (Novice) on Mar 19, 2010 at 11:14 UTC | |
by roboticus (Chancellor) on Mar 19, 2010 at 15:01 UTC |