perl可以';t使用字符串作为数组引用

perl可以';t使用字符串作为数组引用,perl,reference,perl-data-structures,Perl,Reference,Perl Data Structures,我有4个应用程序。让我们叫他们:App1、App2、App3和App4 对于这些应用程序,我都有一个数组:例如: my @App1_links = (...some data...); my @App2_links = (...some data...); my @App3_links = (...some data...); my @App4_links = (...some data...); 现在,我的代码中有一个循环,通过这4个应用程序,我打算这样做: my $link_name =

我有4个应用程序。让我们叫他们:App1、App2、App3和App4

对于这些应用程序,我都有一个数组:例如:

my @App1_links = (...some data...);
my @App2_links = (...some data...);
my @App3_links = (...some data...);
my @App4_links = (...some data...);
现在,我的代码中有一个循环,通过这4个应用程序,我打算这样做:

my $link_name = $app_name . "_links";
    where $app_name will be App1, App2 etc...

and then use it as : @$link_name
现在,这段代码完成了我不使用时打算执行的操作:
使用strict
,但不使用其他方法

The error is: Can't use string ("App1_links") as an ARRAY ref while "strict refs" in use at code.pm line 123.
如何使用
使用strict
实现此功能


请提供帮助。

您正在使用
$link\u name
作为一个链接,这在
中是不允许的,请使用严格的“refs”

尝试改用散列,例如

my %map = (
    App1 => \@App1_links,
    ...
);
my $link_name = $map{$app_name};
正如我在别处所说


如果您提供更有意义的代码片段,那就太好了。您是否有具有这些名称的数组,并且正在尝试访问它们?我想我已经提供了足够的信息。请告诉我什么是含糊不清的帖子,我可以修复它。名称可以是任何东西,但想法是我想要表达的,并让你明白这一点。我的循环正在通过4个应用程序,因此我需要连接并获得链接名称。我将不得不更改大量代码来循环数组。还有其他想法吗?我看不出有任何合理的理由使用
没有严格的“refs”这里。这样做会“解决”你的问题,因为“解决”有一定的价值。上面的代码循环了所有应用程序的所有链接。感谢您的解决方案。让我试试这个。
my @AppLinks = (
    \@App1_links,
    \@App2_links,
    \@App3_links,
    # ...
);

for my $app ( @AppLinks ) {
    for my $link ( @$app ) {
        # loop over links for each app
    }
}
for my $i ( 0 .. $#AppLinks ) {
    printf "App%d_links\n", $i + 1;
    for my $link ( @{ $AppLinks[$i] } ) {
        # loop over links for each app
    }
}