Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
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 (Parson) 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: (13)
As of 2014-08-21 21:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (143 votes), past polls