Hi Rob,
Thanks for the detailed explanation. Appreciate it.

Yes, perfect. All the details are captured.  i should be able to modify the
output from your code.

Thanks
Sj



On Wed, Aug 22, 2012 at 5:01 PM, Rob Coops <rco...@gmail.com> wrote:

>
>
> On Wed, Aug 22, 2012 at 4:39 PM, jet speed <speedj...@googlemail.com>wrote:
>
>> Hi All,
>>
>> Please advice me on now to capture the data below in the format as below.
>>
>> i thought of using hash, but then the problem is each DisplayDevNum has
>> multiple WWN.  some has 4 elements, some has 2. Any other method ?
>> Apprecaite your comments.
>>
>>
>> i want to caputre in the below format.
>> DisplayDevNum and its corresponding WWN=10:00:00:00:c9:c9:xx:xx and
>> nickname= xxxxx
>> DisplayDevNum and its corresponding WWN=10:00:00:00:c9:c9:xx:xx and
>> nickname= xxxxx
>>
>> ----
>>
>> DisplayDevNum=1D:D4
>> domainID=7
>> devNum=8,888
>> List of 4 WWN elements
>> WWN=10:00:00:00:c9:c9:89:8c
>> nickname=res-abc
>> WWN=10:00:00:00:c9:c9:89:8b
>> nickname=res-abd
>> WWN=10:00:00:00:c9:c9:89:8a
>> nickname=res-a33
>> WWN=10:00:00:00:c9:c9:89:8i
>> nickname=res-34
>> DisplayDevNum=1D:D9
>> domainID=7
>> devNum=8,888
>> List of 2 WWN elements
>> WWN=10:00:00:00:c8:c9:89:8f
>> nickname=res-a1
>> WWN=10:00:00:00:c9:c9:89:81
>> nickname=res-a33
>>
>> Sj
>>
>
> Hi Sj,
>
> The hash idea is a good one but it is going to be a little bit more
> complex then a simple hash. You will first need to record the DisplayDevNum
> (and remember it, then find all the underlying information and associate it
> with the DisplayDevNum.
>
> The following example does just that:
>
> use strict;
> use warnings;
> use Switch;
>
> use Data::Dumper;
>
> my $DisplayDevNum_tracker;
> my $WWN_tracker;
>
> my %complex_hash;
>
> open my $fh, "<", "text.txt" or die $!;
> while ( <$fh> ) {
>  chomp;
>  my $line = $_;
>
>  my ( $key, $value ) = split/=/,$line;
>
>  switch ( $key ) {
>   case 'DisplayDevNum' { $DisplayDevNum_tracker = $value; $complex_hash{
> $value } = {}; }
>   case 'domainID'      { $complex_hash{ $DisplayDevNum_tracker
> }{'domainID'} = $value; }
>   case 'devNum'        { $complex_hash{ $DisplayDevNum_tracker }{'devNum'}
> = $value; }
>   case 'WWN'           { $WWN_tracker = $value; $complex_hash{
> $DisplayDevNum_tracker }{ $value } = {}; }
>   case 'nickname'      { $complex_hash{ $DisplayDevNum_tracker }{
> $WWN_tracker } = $value; }
>  }
> }
>
> print Dumper %complex_hash;
>
> In short open the file loop over it one line at a time, remove the
> linefeed. Then split on the = sign automatically dropping lines you do not
> care about. Then using a switch statement figure out what type of line you
> are dealing with.
> If it is a DisplayDevNum line remember the value. if the key is anything
> else use the remembered DisplayDevNum to associate the new data with it. If
> the WWN line is found remember the value and once you get to the nickname
> associate this with the remembered WWN value.
>
> Printing it all out you get a hash that looks like this:
> $VAR1 = '1D:D9';
> $VAR2 = {
>           'devNum' => '8,888',
>           'domainID' => '7',
>           '10:00:00:00:c9:c9:89:81' => 'res-a33',
>           '10:00:00:00:c8:c9:89:8f' => 'res-a1'
>         };
> $VAR3 = '1D:D4';
> $VAR4 = {
>           '10:00:00:00:c9:c9:89:8a' => 'res-a33',
>           'devNum' => '8,888',
>           'domainID' => '7',
>           '10:00:00:00:c9:c9:89:8b' => 'res-abd',
>           '10:00:00:00:c9:c9:89:8c' => 'res-abc',
>           '10:00:00:00:c9:c9:89:8i' => 'res-34'
>         };
>
> Which is I believe what you are looking for right?
>
> Regards,
>
> Rob
>

Reply via email to