7
use constant {
    COLUMNS => qw/ TEST1 TEST2 TEST3 /,
}

我可以使用 Perl 中的常量包存储数组吗?

每当我继续尝试使用数组 likemy @attr = (COLUMNS);时,它​​都不包含值。

4

2 回答 2

12

或删除文档显示的花括号:-

  1 use strict;
  2 use constant COLUMNS => qw/ TEST1 TEST2 TEST3 /;
  3 
  4 my @attr = (COLUMNS);
  5 print @attr;

这使 :-

 % perl test.pl
TEST1TEST2TEST3

您的代码实际上定义了两个常量 COLUMNS 和 TEST2 :-

use strict;
use constant { COLUMNS => qw/ TEST1 TEST2 TEST3 /, };

my @attr = (COLUMNS);
print @attr;
print TEST2

并给出:-

% perl test.pl
TEST1TEST3
于 2013-08-12T13:45:41.973 回答
8

使用 a+表示它是一个常量。

use constant {
  COLUMNS => [qw/ TEST1 TEST2 TEST3 /],
};

print @{+COLUMNS};

+是对解释器的提示,即该常量实际上是一个常量,而不是一个简单的词。有关更多详细信息,请参阅此回复

于 2013-08-12T13:37:54.353 回答