文档指出标量上下文中的列表常量当前返回值的数量,但这在将来可能会改变。它还指出,要将列表常量用作数组,请将其放在括号中。那么,获取列表常量中值的数量的正确方法是什么,以及我在下面的代码中做错了什么?我收到错误: 裸字在 D:\Batch/list-const-error.pl 第 5 行“@(INFOFIELDS”附近找到了操作员期望的位置 (INFOFIELDS 之前缺少运算符?) D:\Batch/list-const-error.pl 第 5 行的语法错误,靠近“@(INFOFIELDS” 谢谢。
use strict;
use warnings;
use constant INFOFIELDS => qw( filedate filetime filesize mtime filename );
use constant OUTTEMPLATE => ' A9 A7 A12 A12 A* ';
use constant NELEMENTS => scalar @(INFOFIELDS);
my $line = pack( OUTTEMPLATE, @ARGV[0..NELEMENTS] );
print( "$line\n" );
常量基本上是一个子例程,因此您只需使用
scalar INFOFIELDS()
或 scalar &INFOFIELDS
即可访问常量列表中的项目数。