1use strict; 2 3use XML::Rules; 4 5my $parser = XML::Rules->new( 6 stripspaces => 7, 7 rules => [ 8 '_default' => 'content', 9 'Dev_Info' => sub { 10 print "$_[1]->{dev_name}\t$_[1]->{configuration}\n"; 11 return; 12 }, 13 'Device' => '', 14 ], 15 start_rules => [ 16 'Hyper,RAID-5_Device,Back_End,Mirror_Set,Front_End,Product,Label,Flags,Capacity' => 'skip', 17 ], 18); 19 20$parser->parse(\*DATA); 21 22__DATA__ 23<?xml version="1.0" standalone="yes" ?> 24<SymCLI_ML> 25 <Symmetrix> 26 <Symm_Info> 27 <symid>000290101935</symid> 28 </Symm_Info> 29 <Device> 30 <Dev_Info> 31 <pd_name>Not Visible</pd_name> 32 <dev_name>0040</dev_name> 33 <configuration>RAID-5</configuration> 34 <attached_bcv>N/A</attached_bcv> 35 <emulation>CKD-3390</emulation> 36 <status>Ready</status> 37 <sa_status>N/A</sa_status> 38 <service_state>Normal</service_state> 39 <ssid>0xD800</ssid> 40 <cuimage>0x00</cuimage> 41 </Dev_Info> 42 <Attached> 43 <BCV>N/A</BCV> 44 <VDEV>N/A</VDEV> 45 </Attached> 46 <Product> 47 <vendor> 48 </vendor> 49 <name> 50 </name> 51 <revision> 52 </revision> 53 <serial_id>N/A</serial_id> 54 <symid>000290101935</symid> 55 </Product> 56 <Label> 57 <type>N/A</type> 58 <defined_label>N/A</defined_label> 59 </Label> 60 <Flags> 61 <ckd>True</ckd> 62 <worm_enabled>False</worm_enabled> 63 <worm_protected>False</worm_protected> 64 <dynamic_spare_invoked>False</dynamic_spare_invoked> 65 <dynamic_rdf_capability>None</dynamic_rdf_capability> 66 <star_mode>False</star_mode> 67 <star_recovery_capability>None</star_recovery_capability> 68 <star_recovery_state>N/A</star_recovery_state> 69 <radiant_managed>False</radiant_managed> 70 <restricted_access_dev>False</restricted_access_dev> 71 <rdb_checksum_enabled>False</rdb_checksum_enabled> 72 <non_exclusive_access>False</non_exclusive_access> 73 <scsi3_persist_res>Disabled</scsi3_persist_res> 74 <vcm>False</vcm> 75 <symmetrix_filesystem>False</symmetrix_filesystem> 76 <snap_save_device>False</snap_save_device> 77 <gatekeeper>False</gatekeeper> 78 <meta>None</meta> 79 </Flags> 80 <Capacity> 81 <block_size>56664</block_size> 82 <cylinders>1113</cylinders> 83 <tracks>16695</tracks> 84 <blocks>16695</blocks> 85 <megabytes>902</megabytes> 86 <kilobytes>923833</kilobytes> 87 </Capacity> 88 <Front_End> 89 <Port> 90 <pd_name>Not Visible</pd_name> 91 <director>03A</director> 92 <director_type>FICON</director_type> 93 <powerpath_type>N/A</powerpath_type> 94 <port>0</port> 95 <port_status>N/A</port_status> 96 <tid>0</tid> 97 <lun>0</lun> 98 <host_lun>N/A</host_lun> 99 <base_address>0</base_address> 100 <alias_count>0</alias_count> 101 </Port> 102 <Port> 103 <pd_name>Not Visible</pd_name> 104 <director>04A</director> 105 <director_type>FICON</director_type> 106 <powerpath_type>N/A</powerpath_type> 107 <port>0</port> 108 <port_status>N/A</port_status> 109 <tid>0</tid> 110 <lun>0</lun> 111 <host_lun>N/A</host_lun> 112 <base_address>0</base_address> 113 <alias_count>0</alias_count> 114 </Port> 115 <Port> 116 <pd_name>Not Visible</pd_name> 117 <director>13A</director> 118 <director_type>FICON</director_type> 119 <powerpath_type>N/A</powerpath_type> 120 <port>0</port> 121 <port_status>N/A</port_status> 122 <tid>0</tid> 123 <lun>0</lun> 124 <host_lun>N/A</host_lun> 125 <base_address>0</base_address> 126 <alias_count>0</alias_count> 127 </Port> 128 <Port> 129 <pd_name>Not Visible</pd_name> 130 <director>14A</director> 131 <director_type>FICON</director_type> 132 <powerpath_type>N/A</powerpath_type> 133 <port>0</port> 134 <port_status>N/A</port_status> 135 <tid>0</tid> 136 <lun>0</lun> 137 <host_lun>N/A</host_lun> 138 <base_address>0</base_address> 139 <alias_count>0</alias_count> 140 </Port> 141 </Front_End> 142 <Mirror_Set> 143 <Mirror> 144 <number>1</number> 145 <type>RAID-5</type> 146 <status>Ready</status> 147 <invalid_tracks>0</invalid_tracks> 148 </Mirror> 149 <Mirror> 150 <number>2</number> 151 <type>RAID-5</type> 152 <status>Ready</status> 153 <invalid_tracks>0</invalid_tracks> 154 </Mirror> 155 <Mirror> 156 <number>3</number> 157 <type>N/A</type> 158 <status>N/A</status> 159 <invalid_tracks>0</invalid_tracks> 160 </Mirror> 161 <Mirror> 162 <number>4</number> 163 <type>N/A</type> 164 <status>N/A</status> 165 <invalid_tracks>0</invalid_tracks> 166 </Mirror> 167 </Mirror_Set> 168 <Back_End> 169 <Hyper> 170 <type>RAID-5</type> 171 <status>Ready</status> 172 <number>N/A</number> 173 <Disk> 174 <director>N/A</director> 175 <interface>N/A</interface> 176 <tid>N/A</tid> 177 <volume_number>N/A</volume_number> 178 </Disk> 179 </Hyper> 180 <Hyper> 181 <type>RAID-5</type> 182 <status>Ready</status> 183 <number>N/A</number> 184 <Disk> 185 <director>N/A</director> 186 <interface>N/A</interface> 187 <tid>N/A</tid> 188 <volume_number>N/A</volume_number> 189 </Disk> 190 </Hyper> 191 </Back_End> 192 <RAID-5_Device> 193 <RAID5_Dev_Info> 194 <tracks_per_stripe>4</tracks_per_stripe> 195 <ready_state>ReadyNoOtherMirror</ready_state> 196 <writeprotect_state>EnabledNoOtherMirror</writeprotect_state> 197 <member_num_of_failing_dev>None</member_num_of_failing_dev> 198 <member_which_invoked_spare>None</member_which_invoked_spare> 199 <disk_director_num_which_owns_spare>-1</disk_director_num_which_owns_spare> 200 <disk_director_ident_which_owns_spare>N/A</disk_director_ident_which_owns_spare > 201 <copy_direction>N/A</copy_direction> 202 </RAID5_Dev_Info> 203 <Hyper> 204 <director>01A</director> 205 <interface>D</interface> 206 <tid>5</tid> 207 <da_vol_num>444</da_vol_num> 208 <hyper_num>56</hyper_num> 209 <hyper_capacity_in_mb>307</hyper_capacity_in_mb> 210 <member_num>4</member_num> 211 <member_status>RW</member_status> 212 <spare_status>N/A</spare_status> 213 <disk_group_num>2</disk_group_num> 214 <disk_capacity_in_mb>140014</disk_capacity_in_mb> 215 </Hyper> 216 <Hyper> 217 <director>15A</director> 218 <interface>D</interface> 219 <tid>5</tid> 220 <da_vol_num>468</da_vol_num> 221 <hyper_num>56</hyper_num> 222 <hyper_capacity_in_mb>307</hyper_capacity_in_mb> 223 <member_num>1</member_num> 224 <member_status>RW</member_status> 225 <spare_status>N/A</spare_status> 226 <disk_group_num>2</disk_group_num> 227 <disk_capacity_in_mb>140014</disk_capacity_in_mb> 228 </Hyper> 229 <Hyper> 230 <director>02C</director> 231 <interface>C</interface> 232 <tid>5</tid> 233 <da_vol_num>66</da_vol_num> 234 <hyper_num>56</hyper_num> 235 <hyper_capacity_in_mb>307</hyper_capacity_in_mb> 236 <member_num>3</member_num> 237 <member_status>RW</member_status> 238 <spare_status>N/A</spare_status> 239 <disk_group_num>2</disk_group_num> 240 <disk_capacity_in_mb>140014</disk_capacity_in_mb> 241 </Hyper> 242 <Hyper> 243 <director>16C</director> 244 <interface>C</interface> 245 <tid>5</tid> 246 <da_vol_num>66</da_vol_num> 247 <hyper_num>56</hyper_num> 248 <hyper_capacity_in_mb>307</hyper_capacity_in_mb> 249 <member_num>2</member_num> 250 <member_status>RW</member_status> 251 <spare_status>N/A</spare_status> 252 <disk_group_num>2</disk_group_num> 253 <disk_capacity_in_mb>140014</disk_capacity_in_mb> 254 </Hyper> 255 </RAID-5_Device> 256 </Device> 257 </Symmetrix> 258</SymCLI_ML> 259