我有点吃惊.如果我使用常量来表示哈希键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
任何方式没有&什么时候使用常量来表示哈希键?
感谢帮助!
解决方法
它在CAVEATS的
constant中记录.
常用的方法是使用():
my %h = (A => "1",B() => "2");
或切换到“非字符串化的逗号”(或简单的逗号):
my %h = (A => "1",B,=> "2");
使用&不会内联常量,因为您可以使用B::Deparse进行验证:
$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