adding a variable name to a hash to name is part of the variable name

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Bobby Chamness

    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_$myserv er_name{$some_k ey}
    want to get this hash name
    $server_thor_na me{$some_key}

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


    -Bobby


  • Jürgen Exner

    #2
    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_$myserv er_name{$some_k ey}
    Why not
    $servers{$myser ver_name}{$some _key}

    jue


    Comment

    • Joe Smith

      #3
      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_$myserv er_name{$some_k ey}
      $servers{$myser ver_name}{$some _key} = $value;


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


      -Joe

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

      Comment

      Working...