On Wednesday 29 Oct 2003 7:35 pm, [EMAIL PROTECTED] wrote:
> Hi,
>
>   It has come to my attention that I need a little understanding
>   of what I'm doing here. Gary has provide some overview but not
>   Technical detail as I would like to have. That isn't his fault.
>   I admire his feedback for sure.
>
>   The code is obvious using hash. This is something I think I need
>   to get a little more clarity on. I would appreciate some feedback
>   Using the declaration I've setup here.
>
> #
> # List of Operating Systems
> #
> my %whichos=('SunOS'    =>'sol',
>            'Aix'      =>'aix',
>            'HP-UX'    =>'hpux',
>            'Micorsoft'=>'W2K');
>
> #
> # List of Commands OS specific
> #
>
> my %commands = ('sol'=>{'hostname'=>'uname -n',
>                       'os'        =>'uname -s',
>                       'osver'     =>'uname -r',
>                       'osrel'     =>'cat /etc/release | awk \'{print
> $3}\'',
>                       'srvtype'   =>'uname -p',
>                         'srvmodel'  =>'uname -i | cut -f2 -d ","',
>                       'memory'    =>'prtconf | grep Memory | awk \'{print
> $3}\'',
>                       'cpu'     =>'psrinfo | awk \'{print $1}\' | wc -l'}
>                       );
>
> With my declared array of whichos and commands. I need to understand
> What is considered the value and what is consider the key.
>
> In whichos I think SunOS is the key and the value is sol.
> In commands I think sol is the key and then a secondardy key is hostname
> with the value of uname -n.
>
> To me it looks as though whichos is a dual deminsioned array while commands
> Is a 3 x 3 deminsioned array.
>
> Have I got this correct so far or am I'm off my rocker?
>
> So if I'm going to search thru this array maybe use the following:
>
>  Foreach $OS (key $whichos){
>    Foreach $CMD {key $command{$OS}){
>       Print $CMD;  <=== This should list out the values in commands array.
>    }
>  }
>
> I think once I understand that then it be easier for me to understand how
> To assign that $CMD variable properly. Thanks for the feedback.

Hi Phil,
(I'll answer your other post when I can see what's wrong).

You're pretty close.  You are right about the %whichos hash, SunOS is the key 
pointing to 'sol' which is the value.

However, you're not quite there with the %commands.  You're right in that 
'sol' is a key, but not about the data.  The data is actually a pointer 
anonymous hash which then itself contains key/value pairs, 'os' being the key 
and 'uname -n' being the value.

your loop above would be: (not it's 'keys' not 'key', and because you're 
accessing whichos as a hash and not a scalar, you need to use the %)

foreach my $OS (keys (%whichos) { # loop through all whichos
  foreach my $cmd (keys %commands { # loop through commands for one OS
    print "$cmd for $OS is '",$commands{$OS}{$cmd},"'.\n";
  }
}

example output would be:

memory for sol is 'prtconf | grep Memory | awk \'{print $3}\'.

to explain the $commands{$OS}{$cmd}:

$ means that we wish to extract a scalar
commands{$OS} gives us a pointer to the hash containg the commands for that OS
{$cms} gives us the hash value for the key $cmd in that hash

HTH

Gary

-- 
Gary Stainburn
 
This email does not contain private or confidential material as it
may be snooped on by interested government parties for unknown
and undisclosed purposes - Regulation of Investigatory Powers Act, 2000     


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to