如何使用常量标记值作为perl中哈希的键?
以下代码的输出为“CONST_TAG”。我希望输出为“MyKey”。
#!/usr/bin/perl
use constant CONST_TAG => 'MyKey';
my $rec = {};
$rec->{CONST_TAG} = "testName";
printf "%s\n", keys(%{$rec});
答案 0 :(得分:4)
除了在他的回答中像user49740所说的那样明确地调用sub(常量只是一个sub)时,你还可以在{{3}前面添加+
符号。 }。这将关闭散列访问curles中的裸字自动引用。
$res->{+CONST_TAG} = "testName";
答案 1 :(得分:2)
$rec->{CONST_TAG()} = "testName";
这是因为散列访问中的裸字(例如CONST_TAG
)被转换为字符串。因此,CONST_TAG
成为字符串'CONST_TAG'
。
声明
use constant NAME => VALUE;
创建一个带有空原型的子程序:
sub NAME () { VALUE }
通过显式调用它,可以避免在哈希访问中自动引用裸字。