use strict; use XML::Rules; my %conf_of; my $parser = XML::Rules->new( stripspaces => 7, rules => [ '_default' => 'content', 'Device' => sub { $conf_of{$_[1]->{Dev_Info}{dev_name}} = "$_[1]->{Dev_Info}{configuration},$_[1]->{Capacity}{cylinders}"; return; }, 'Dev_Info,Capacity' => 'no content', ], start_rules => [ 'Hyper,RAID-5_Device,Back_End,Mirror_Set,Front_End,Product,Label,Flags' => 'skip', ], ); $parser->parse(\*DATA); use Data::Dumper; print Dumper(\%conf_of); __DATA__ <?xml version="1.0" standalone="yes" ?> <SymCLI_ML> <Symmetrix> <Symm_Info> <symid>000290101935</symid> </Symm_Info> <Device> <Dev_Info> <pd_name>Not Visible</pd_name> <dev_name>0040</dev_name> <configuration>RAID-5</configuration> <attached_bcv>N/A</attached_bcv> <emulation>CKD-3390</emulation> <status>Ready</status> <sa_status>N/A</sa_status> <service_state>Normal</service_state> <ssid>0xD800</ssid> <cuimage>0x00</cuimage> </Dev_Info> <Attached> <BCV>N/A</BCV> <VDEV>N/A</VDEV> </Attached> <Product> <vendor> </vendor> <name> </name> <revision> </revision> <serial_id>N/A</serial_id> <symid>000290101935</symid> </Product> <Label> <type>N/A</type> <defined_label>N/A</defined_label> </Label> <Flags> <ckd>True</ckd> <worm_enabled>False</worm_enabled> <worm_protected>False</worm_protected> <dynamic_spare_invoked>False</dynamic_spare_invoked> <dynamic_rdf_capability>None</dynamic_rdf_capability> <star_mode>False</star_mode> <star_recovery_capability>None</star_recovery_capability> <star_recovery_state>N/A</star_recovery_state> <radiant_managed>False</radiant_managed> <restricted_access_dev>False</restricted_access_dev> <rdb_checksum_enabled>False</rdb_checksum_enabled> <non_exclusive_access>False</non_exclusive_access> <scsi3_persist_res>Disabled</scsi3_persist_res> <vcm>False</vcm> <symmetrix_filesystem>False</symmetrix_filesystem> <snap_save_device>False</snap_save_device> <gatekeeper>False</gatekeeper> <meta>None</meta> </Flags> <Capacity> <block_size>56664</block_size> <cylinders>1113</cylinders> <tracks>16695</tracks> <blocks>16695</blocks> <megabytes>902</megabytes> <kilobytes>923833</kilobytes> </Capacity> <Front_End> <Port> <pd_name>Not Visible</pd_name> <director>03A</director> <director_type>FICON</director_type> <powerpath_type>N/A</powerpath_type> <port>0</port> <port_status>N/A</port_status> <tid>0</tid> <lun>0</lun> <host_lun>N/A</host_lun> <base_address>0</base_address> <alias_count>0</alias_count> </Port> <Port> <pd_name>Not Visible</pd_name> <director>04A</director> <director_type>FICON</director_type> <powerpath_type>N/A</powerpath_type> <port>0</port> <port_status>N/A</port_status> <tid>0</tid> <lun>0</lun> <host_lun>N/A</host_lun> <base_address>0</base_address> <alias_count>0</alias_count> </Port> <Port> <pd_name>Not Visible</pd_name> <director>13A</director> <director_type>FICON</director_type> <powerpath_type>N/A</powerpath_type> <port>0</port> <port_status>N/A</port_status> <tid>0</tid> <lun>0</lun> <host_lun>N/A</host_lun> <base_address>0</base_address> <alias_count>0</alias_count> </Port> <Port> <pd_name>Not Visible</pd_name> <director>14A</director> <director_type>FICON</director_type> <powerpath_type>N/A</powerpath_type> <port>0</port> <port_status>N/A</port_status> <tid>0</tid> <lun>0</lun> <host_lun>N/A</host_lun> <base_address>0</base_address> <alias_count>0</alias_count> </Port> </Front_End> <Mirror_Set> <Mirror> <number>1</number> <type>RAID-5</type> <status>Ready</status> <invalid_tracks>0</invalid_tracks> </Mirror> <Mirror> <number>2</number> <type>RAID-5</type> <status>Ready</status> <invalid_tracks>0</invalid_tracks> </Mirror> <Mirror> <number>3</number> <type>N/A</type> <status>N/A</status> <invalid_tracks>0</invalid_tracks> </Mirror> <Mirror> <number>4</number> <type>N/A</type> <status>N/A</status> <invalid_tracks>0</invalid_tracks> </Mirror> </Mirror_Set> <Back_End> <Hyper> <type>RAID-5</type> <status>Ready</status> <number>N/A</number> <Disk> <director>N/A</director> <interface>N/A</interface> <tid>N/A</tid> <volume_number>N/A</volume_number> </Disk> </Hyper> <Hyper> <type>RAID-5</type> <status>Ready</status> <number>N/A</number> <Disk> <director>N/A</director> <interface>N/A</interface> <tid>N/A</tid> <volume_number>N/A</volume_number> </Disk> </Hyper> </Back_End> <RAID-5_Device> <RAID5_Dev_Info> <tracks_per_stripe>4</tracks_per_stripe> <ready_state>ReadyNoOtherMirror</ready_state> <writeprotect_state>EnabledNoOtherMirror</writeprotect_state> <member_num_of_failing_dev>None</member_num_of_failing_dev> <member_which_invoked_spare>None</member_which_invoked_spare> <disk_director_num_which_owns_spare>-1</disk_director_num_which_owns_spare> <disk_director_ident_which_owns_spare>N/A</disk_director_ident_which_owns_spare > <copy_direction>N/A</copy_direction> </RAID5_Dev_Info> <Hyper> <director>01A</director> <interface>D</interface> <tid>5</tid> <da_vol_num>444</da_vol_num> <hyper_num>56</hyper_num> <hyper_capacity_in_mb>307</hyper_capacity_in_mb> <member_num>4</member_num> <member_status>RW</member_status> <spare_status>N/A</spare_status> <disk_group_num>2</disk_group_num> <disk_capacity_in_mb>140014</disk_capacity_in_mb> </Hyper> <Hyper> <director>15A</director> <interface>D</interface> <tid>5</tid> <da_vol_num>468</da_vol_num> <hyper_num>56</hyper_num> <hyper_capacity_in_mb>307</hyper_capacity_in_mb> <member_num>1</member_num> <member_status>RW</member_status> <spare_status>N/A</spare_status> <disk_group_num>2</disk_group_num> <disk_capacity_in_mb>140014</disk_capacity_in_mb> </Hyper> <Hyper> <director>02C</director> <interface>C</interface> <tid>5</tid> <da_vol_num>66</da_vol_num> <hyper_num>56</hyper_num> <hyper_capacity_in_mb>307</hyper_capacity_in_mb> <member_num>3</member_num> <member_status>RW</member_status> <spare_status>N/A</spare_status> <disk_group_num>2</disk_group_num> <disk_capacity_in_mb>140014</disk_capacity_in_mb> </Hyper> <Hyper> <director>16C</director> <interface>C</interface> <tid>5</tid> <da_vol_num>66</da_vol_num> <hyper_num>56</hyper_num> <hyper_capacity_in_mb>307</hyper_capacity_in_mb> <member_num>2</member_num> <member_status>RW</member_status> <spare_status>N/A</spare_status> <disk_group_num>2</disk_group_num> <disk_capacity_in_mb>140014</disk_capacity_in_mb> </Hyper> </RAID-5_Device> </Device> </Symmetrix> </SymCLI_ML>