f



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 


0
4/22/2007 1:45:35 AM
comp.lang.perl 1494 articles. 0 followers. gcox285 (113) is leader. Post Follow

2 Replies
973 Views

Similar Articles

[PageSpeed] 13

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 


0
jurgenex (484)
4/22/2007 3:34:42 AM
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.
0
Joe
4/22/2007 9:54:27 PM
Reply: