Say how do you parse through this particular XML using perl
A little background: I'm writing a perl script where I separate the XML(datamod) into two XML files.
Example: Existing XML
<Root>
<Top>
<Module name="ALU">
<input name="po_ctrl"/>
<bidirection name="add"/>
</Module>
<Module name="Po_ctrl">
<input name="ctrl"/>
<output name="ctrlbus"/>
<bidirection name="add"/>
</Module>
<input name="add"/>
<input name="clk"/>
<input name="da_in"/>
<output name="da_out"/>
<bidirection name="ctrl"/>
</Root>
</Top>
Below is the perl snippet written
open(IN_FILE, "<datamod.xml") or die "Cant open input file";
open(TM1_FILE, ">tm1.xml") or die "Cant Open tm1.xml";
open(TM2_FILE, ">tm2.xml") or die "Cant Open tm2.xml";
my $chk = 0;
while(my $line = <IN_FILE>){
$line =~ s/^\s+//;
@xwords = split(" ",$line);
if($xwords[0] ne "<Module" and $xwords[0] ne "</Module>" and $chk ==0) {
print TM1_FILE $line;
}
else {
print TM2_FILE $line;
$chk = 1;
}
if($xwords[0] eq "</Module>" and $chk == 1) {
$chk = 0;
}
}
close TM1_FILE;
close TM2_FILE;
Expected output into two temp files
Temp file 1:
<Root>
<Top>
<input name="add"/>
<input name="clk"/>
<input name="da_in"/>
<output name="da_out"/>
<bidirection name="ctrl"/>
</Top>
</Root>
Temp File 2
<Root>
<Top>
<Module name="ALU">
<input name="po_ctrl"/>
<bidirection name="add"/>
</Module>
<Module name="Po_ctrl">
<input name="ctrl"/>
<output name="ctrlbus"/>
<bidirection name="add"/>
</Module>
</Root>
</Top>
NOTE: I'm using the XML::Simple
module because the Perl script is written in it and it's tedious to convert to any other XML module.
Any help is appreciated, kindly post the rewritten snippet!