Linux 在perl中如何将变量作为密钥传递给散列

Linux 在perl中如何将变量作为密钥传递给散列,linux,perl,Linux,Perl,输出: 在host.pl第7行的打印中使用未初始化的值 无法将变量作为密钥传递给哈希 问候,, 卡莱 您正在用单引号引用$host。因此,不会对其进行插值。您想要的是$envin{$host}$envin{“$host”}可以工作,但引号是多余的 $host可能有换行符。(chomp将修复) 通常,散列的书写方式更为清晰: my $host =`hostname | cut -c8-10`; my %envin = ('dev','dev','stg','stage','prd','

输出:

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

无法将变量作为密钥传递给哈希

问候,, 卡莱

  • 您正在用单引号引用
    $host
    。因此,不会对其进行插值。您想要的是
    $envin{$host}
    $envin{“$host”}
    可以工作,但引号是多余的
  • $host
    可能有换行符。(
    chomp
    将修复)
  • 通常,散列的书写方式更为清晰:

    my $host =`hostname | cut -c8-10`;
          my %envin = ('dev','dev','stg','stage','prd','prod');
          print $envin{'$host'};
    
      • 您正在用单引号引用
        $host
        。因此,不会对其进行插值。您想要的是
        $envin{$host}
        $envin{“$host”}
        可以工作,但引号是多余的
      • $host
        可能有换行符。(
        chomp
        将修复)
      • 通常,散列的书写方式更为清晰:

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

      正确。这是一个有用的功能,但我倾向于保留引号,因为我觉得它更清晰。嗨,Sobrique,我用了你说的hash。并打印$envin{$host};但同样的错误..我得到print$host的输出是dev.ya.it given从命令行运行“hostname | cut-c8-10”,告诉我们它打印的内容$host将在末尾有一个换行;在将其用作哈希键之前,请先使用chomp将其删除。检查值的一个好方法是
      使用Data::Dumper$数据::转储程序::Useqq=1;打印转储程序$host
      True。这是一个有用的功能,但我倾向于保留引号,因为我觉得它更清晰。嗨,Sobrique,我用了你说的hash。并打印$envin{$host};但同样的错误..我得到print$host的输出是dev.ya.it given从命令行运行“hostname | cut-c8-10”,告诉我们它打印的内容$host将在末尾有一个换行;在将其用作哈希键之前,请先使用chomp将其删除。检查值的一个好方法是
      使用Data::Dumper$数据::转储程序::Useqq=1;打印转储程序$host