0

我试图在字符串上运行一个循环,$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;
}
4

2 回答 2

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";
}
于 2013-09-17T09:54:27.607 回答
1

尝试这个:

my @ACES_1_key = (
    'NIL-RETURN',
    'ASSESSEE-NAME',
    'LTU',
    'MONTH',
    'RETURN-YEAR',
    'REGISTRATION-NUMBER'
);
foreach my $key (@ACES_1_key) {
    print $key;
}

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

(并没有测试它)

于 2013-09-17T09:53:03.817 回答