如何在变量中使用字符串作为Perl数组引用

时间:2013-09-17 09:42:35

标签: perl

我正在尝试在$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;
}

2 个答案:

答案 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;
}

(我重新引用元素并使变量成为实际数组)

(并没有测试)