my $parser = new XML::LibXML; my $tree = $parser->parse_file('935.xml'); my $root = $tree->getDocumentElement; my @symm_tree = $root->getChildrenByTagName('Symmetrix') or croak; for my $symm_tree ( @symm_tree ) { my @devices_tree = $symm_tree->getChildrenByTagName('Device') or croak; my $device_num; for my $device_tree ( @devices_tree ) { $device_num++; my @devinfo_tree = $device_tree->getChildrenByTagName('Dev_Info') or croak; my @capacity_tree = $device_tree->getChildrenByTagName('Capacity') or croak; my $dev_name; # key for my $devinfo_tree ( @devinfo_tree ) { $dev_name = $devinfo_tree->getChildrenByTagName('dev_name'); my $dev_cnfg = $devinfo_tree->getChildrenByTagName('configuration'); $conf_of{$dev_name} .= $dev_cnfg; } for my $capacity_tree ( @capacity_tree ) { my $cyls = $capacity_tree->getChildrenByTagName('cylinders'); $conf_of{$dev_name} .= $cyls; } } }