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

输出:
在host.pl第7行的打印中使用未初始化的值。
无法将变量作为密钥传递给哈希
当做,
卡莱

最佳答案

你引用的是单引号。因此,它不会被插值。你想要的是$host$envin{$host}可以,但引号是多余的。
$envin{"$host"}可能有换行符。($host将修复)
通常散列更清楚地写成如下:

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

关于linux - 如何将变量作为键传递给Perl中的哈希,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31297928/

10-14 03:27