Perl:哈希键中的常量值

时间:2018-01-03 11:45:30

标签: perl hash constants

我有点惊讶。如果我使用常量来表示哈希键Perl不使用该值。我需要把&在它面前实现这一目标。

use constant A => "a";
use constant B => "b";

my %h = (A => "1", &B => "2");

print "\n". A . ", " . B;
foreach (sort (keys (%h)))
{
    print "\n"  . $_ . "=" . $h {$_};
}

输出:

a, b
A=1
b=2

但我希望(第二行不同)。

a, b
a=1
b=2

没有&的任何方式做到这一点何时使用常量来表示哈希键?

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

它已在CAVEATS下的constant中记录。

常用方法是使用my %h = (A => "1", B() => "2");

my %h = (A => "1", B ,=> "2");

或切换到"非字符串化的胖逗号" (或一个简单的逗号):

&

使用$ perl -MO=Deparse ~/1.pl sub B () { 'b' } use constant ('A', 'a'); use constant ('B', 'b'); my(%h) = ('A', '1', &B, '2'); print "\na, b"; foreach $_ (sort keys %h) { print "\n" . $_ . '=' . $h{$_}; } /home/choroba/1.pl syntax OK 并不会内联常量,因为您可以使用B::Deparse进行验证:

var myObject = {
  id: 0,
  category: {
    id: 0,
    name: "string"
  },
  name: "doggie",
  photoUrls: [
    "string"
  ],
  tags: [{
    id: 0,
    name: "string"
  }],
  status: "available"
};
相关问题