Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

XML Parsing

by kiranveluri (Initiate)
on Apr 08, 2013 at 12:50 UTC ( #1027492=perlquestion: print w/ replies, xml ) Need Help??
kiranveluri has asked for the wisdom of the Perl Monks concerning the following question:

Hi I am new to perl,trying to read an XML file attached below.I am able to read the file using XML::Simple Module.I could not loop through the hash.Can some one help me in looping through the variables mentioned in below XML file output . I tried variuos scenarions but couldn't parse through the elements.

$VAR1 = { 'cmd' => { 'parameter' => { 'Additional information about port $ +port' => { + 'cycle' => '1300', + 'command' => [ + { + 'run' => 'ps -fp $pid', + 'text' => '^(\\w+)\\s+\\d+\\s+(\\d+)\\s+\\S+\ +\s+\\S+\\s+\\S+\\s+\\d+:\\d+:\\d+\\s+(.*)$', + 'output' => 'Full command line:$3, Parent PID +:$2' + }, + { + 'run' => 'service iptables status | grep dpt: +$port', + 'text' => '^(\\d+)\\s+(DROP|ACCEPT)\\s+(udp|t +cp|icmp|all)\\s+\\S+\\s+(\\S+)\\s+(\\S+)\\s+(.*)$', + 'output' => 'Iptables takes action $2 for por +t $port' + } + ] + }, 'Tcp Ports In Listen State' => { 'cycl +e' => '1200', 'comm +and' => [ + { + 'run' => 'netstat -pant | grep LISTEN', + 'text' => '^(\\w+)\\s+\\d+\\s+\\d+\\s+[\\d.]+:(\\d+)\\s+[\\ +d.]+:\\D+\\s+\\S+\\s+(\\d+)/(\\S+)', + 'data' => ' $protocol = $1 $port = $2 $pid = $3', + 'output' => ' $1 port $2 was opened by $4 process having p +id $3' + } + ] } } } }

Comment on XML Parsing
Download Code
Re: XML Parsing
by Rahul6990 (Beadle) on Apr 08, 2013 at 13:05 UTC
Re: XML Parsing
by hdb (Prior) on Apr 08, 2013 at 13:05 UTC

    You need to learn about references. Here is some code but it will be difficult to understand.

    for my $parm (sort keys %{ $$VAR1{cmd}{parameter} } ) { print "$parm\n"; print "\tCycle:",$$VAR1{cmd}{parameter}{$parm}{cycle},"\n"; print "\tCommand:\n"; for my $cmd ( @{ $$VAR1{cmd}{parameter}{$parm}{command} } ) { for my $key ( sort keys %{$cmd} ) { print "\t\t$key: ",$$cmd{$key},"\n"; } print "\n"; } }
Re: XML Parsing
by RichardK (Priest) on Apr 08, 2013 at 13:28 UTC

    The Perl Data Structures Cookbook perldsc is full of examples and will help you understand how to navigate such things. You should have a local copy too, try 'perldoc perldsc'.

Re: XML Parsing
by grantm (Parson) on Apr 09, 2013 at 00:44 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1027492]
Approved by marto
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (15)
As of 2014-10-21 17:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (106 votes), past polls