An xml standard allows one to write stuff like the below (it make parts.lst from parts.xml).
Code:
# use module
use XML::Simple;
# create object
$xml = new XML::Simple;
# read XML file
$data = $xml->XMLin("parts.xml");
@PEArray = @{$data->{"PartEntry"}};
foreach $Indx (0..$#PEArray) {
print( sprintf("%-27s", $PEArray[$Indx]->{"Filename"})
.$PEArray[$Indx]->{"Description"}."\n" );
}