我正在尝试在$ACES_1_key
的字符串上运行循环,但我得到Can't use string ... as an ARRAY ref while "strict refs" in use
。
my $ACES_1_key = ("`NIL-RETURN`,`ASSESSEE-NAME`,`LTU`,`MONTH`,`RETURN-YEAR`,`REGISTRATION-NUMBER`");
foreach my $key (@$ACES_1_key) {
print $key;
}
答案 0 :(得分:2)
你应该避免在词法变量名中使用大写字母。它们保留用于全局标识符,例如包名称。
如果您首先尝试设置数组引用,那么您需要这样的内容:
my $aces_1_key = [ qw[ NIL-RETURN ASSESSEE-NAME LTU MONTH RETURN-YEAR REGISTRATION-NUMBER ] ];
foreach my $key (@$aces_1_key) {
print $key, "\n";
}
<强>输出强>
NIL-RETURN
ASSESSEE-NAME
LTU
MONTH
RETURN-YEAR
REGISTRATION-NUMBER
或者,如果您有一个字符串,您需要将其拆分为单个子字符串,那么有几种方法可以。下面的程序显示了一个。它将逗号分隔字符串以生成引用的子字符串列表。然后使用tr//
在循环内删除引号。输出与前一个示例的输出相同。
my $aces_1_key=("`NIL-RETURN`,`ASSESSEE-NAME`,`LTU`,`MONTH`,`RETURN-YEAR`,`REGISTRATION-NUMBER`");
foreach my $key (split /,/, $aces_1_key) {
$key =~ tr/`//d;
print $key, "\n";
}
答案 1 :(得分:1)
试试这个:
my @ACES_1_key = (
'NIL-RETURN',
'ASSESSEE-NAME',
'LTU',
'MONTH',
'RETURN-YEAR',
'REGISTRATION-NUMBER'
);
foreach my $key (@ACES_1_key) {
print $key;
}
(我重新引用元素并使变量成为实际数组)
(并没有测试)