in reply to Parse handler for Attributes in XML

I'm not particularly familiar with XML::Parser but this line in particular leapt out at me:

if (%attrs eq "command") {

I suspect you want something like:

if (exists $attrs{command}) {

I also noticed your XML has no closing tag (i.e. </DCA>) - possibly a cut-n-paste error.

-- Ken

Replies are listed 'Best First'.
Re^2: Parse handler for Attributes in XML
by balajinagaraju (Sexton) on Apr 10, 2012 at 10:13 UTC
    Thanks Ken, But i want to access specific attributes rather than checking for the presence of the attributes.

      $attrs{command} is a specific attribute. Checking for existence before attempting to access a value (e.g. ... $attrs{command} eq 'some_value' ...) avoids autovivification; depending on what other code you write, this may or may not be important.

      However, the main point I was trying to get across was that %attrs eq "command" was not doing what you wanted/intended/expected. The following short piece of code may help to further explain this:

      $ perl -Mstrict -Mwarnings -E ' > my %x = (a => 1); > say +(%x eq q{a}) ? 1 : 0; > say %x; > say qq{@{[%x]}}; > ' 0 a1 a 1

      -- Ken