如何将变量作为Key传递给perl中的hash

时间:2015-07-08 16:03:22

标签: linux perl

my $host =`hostname | cut -c8-10`;
      my %envin = ('dev','dev','stg','stage','prd','prod');
      print $envin{'$host'};

输出:

  

在host.pl第7行打印时使用未初始化的值。

无法将变量作为哈希

的键传递

此致 卡莱

1 个答案:

答案 0 :(得分:6)

  • 您使用单引号引用$host。因此它不会被插值。您想要$envin{$host}$envin{"$host"}会起作用,但报价是多余的。
  • $host可能有换行符。 (chomp将修复)
  • 通常哈希的写法更清晰:

    my %envin = (
        'dev' => 'dev',
        'stg' => 'stage',
        'prd' => 'prod', 
    );