Help | Site Map
Connecting Tech Pros Worldwide
 
 
LinkBack Thread Tools
  #1  
Old April 22nd, 2007, 02:55 AM
Bobby Chamness
Guest
 
Posts: n/a
Default 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


  #2  
Old April 22nd, 2007, 04:35 AM
Jürgen Exner
Guest
 
Posts: n/a
Default Re: adding a variable name to a hash to name is part of the variable name

Bobby Chamness wrote:
Quote:
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.
Quote:
I
want each server to have its own hash.
Just use a hash of (references to) hashes.
Quote:
$server_$myserver_name{$some_key}
Why not
$servers{$myserver_name}{$some_key}

jue


  #3  
Old April 22nd, 2007, 09:55 PM
Joe Smith
Guest
 
Posts: n/a
Default Re: adding a variable name to a hash to name is part of the variablename

Bobby Chamness wrote:
Quote:
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.
Quote:
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.
Quote:
$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.
 

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over network members.
Post your question now . . .
It's fast and it's free

Popular Articles