Perl:将值列表声明为常量

标签 perl

我一直在使用 [constant] pragma,有一个关于如何声明常量列表的快速问题:

use constant {
   LIST_ONE   => qw(this that the other),    #BAD
   LIST_TWO   => ("that", "this", "these", "some of them"),   #BAR
   LIST_THREE => ["these", "those", "and thems"],   #WORKS
};

最后一个问题是它创建了对列表的引用:

use constant {
   LIST_THREE => ["these", "those", "and thems"],
};

# Way 1: A bit wordy and confusing

my $arrayRef = LIST_THREE;
my @array = @{$arrayRef};

foreach my $item (@array) {
   say qq(Item = "$item");
}

# Way 2: Just plain ugly
foreach my $item (@{&LIST_THREE}) {

   say qq(Item = "$item");
}

这行得通,但它有丑陋的一面。

是否有更好的方法来创建常量列表?

我意识到常量实际上只是一种创建返回常量值的子例程的廉价方法。但是,子程序也可以返回一个列表。

声明常量列表的最佳方式是什么?

最佳答案

根据 the documentation ,如果你这样做:

use constant DAYS => qw( Sunday Monday Tuesday Wednesday Thursday Friday Saturday);

...然后你可以这样做:

my @workdays = (DAYS)[1..5];

我会说这比您描述的两种引用常量列表的方法更好。

关于Perl:将值列表声明为常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7814642/

相关文章:

perl - perl 中来自 redis 的非阻塞 blpop

perl - 如何使回复用户的电子邮件机器人不回复自动回复并进入邮件循环

regex - 有没有办法使用正匹配正则表达式运算符对字符串进行负匹配?

mysql - 扩展的 ASCII 字符在 MySQL 中显示为垃圾 通过 perl 插入数据库

perl - 如何使用 cpan 为模块安装指定变量?

regex - 如何从 Perl 中的字符串中提取单个字符或封闭的分组?

perl - 如何防止 PerlTidy 对齐分配但继续添加单个空格?

perl - Perl 中 LISTS 的内部存储器表示

windows - 为什么我在 Windows 上使用 Perl-Tk 构建复杂的 GUI 时遇到问题?

perl - 将 Moose 与 Test::Class 一起使用 - 构造函数问题