Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Perl (http://www.velocityreviews.com/forums/f17-perl.html)
-   -   adding a variable name to a hash to name is part of the variable name (http://www.velocityreviews.com/forums/t498084-adding-a-variable-name-to-a-hash-to-name-is-part-of-the-variable-name.html)

Bobby Chamness 04-22-2007 01:45 AM

adding a variable name to a hash to name is part of the variable name
 
I have a perl script that I wrote the loops through a list of servers in a
file and I want to create a hash with the server name in it. I want each
server to have its own hash.

for example
$myserver = thor;
hash name
$server_$myserver_name{$some_key}
want to get this hash name
$server_thor_name{$some_key}

How do I get the $myserver name to be interpolated to thor in that line?
I tried this and it failed.
$server_${myserver}_name{$some_key}


-Bobby



Jürgen Exner 04-22-2007 03:34 AM

Re: adding a variable name to a hash to name is part of the variable name
 
Bobby Chamness wrote:
> I have a perl script that I wrote the loops through a list of servers
> in a file and I want to create a hash with the server name in it.


You mean a the server name as part of the variable name? Well, maybe you
think that's what you want, but it is A Very Bad Idea (TM). See the FAQ "How
can I use a variable as a variable name?" and gazillions of previuos
discussions in CLPM for details.

> I
> want each server to have its own hash.


Just use a hash of (references to) hashes.

> $server_$myserver_name{$some_key}


Why not
$servers{$myserver_name}{$some_key}

jue



Joe Smith 04-22-2007 09:54 PM

Re: adding a variable name to a hash to name is part of the variablename
 
Bobby Chamness wrote:
> I have a perl script that I wrote the loops through a list of servers in a
> file and I want to create a hash with the server name in it.


Sounds good. A master hash with server name as the top-level key.

> I want each server to have its own hash.


With a hash of hashes, each server has its own hash. The server's hash
just doesn't have a name; it is a member of the master hash.

> $server_$myserver_name{$some_key}


$servers{$myserver_name}{$some_key} = $value;


foreach my $server (sort keys %servers) {
print "Processing server $server\n";
foreach my $key (sort keys %{$servers{$server}}) {
print " $key = $servers{$server}{$key}\n";
}
}


-Joe

P.S. The newsgroup comp.lang.perl is defunct. Use comp.lang.perl.misc instead.


All times are GMT. The time now is 06:36 AM.

Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57