perl可以';t使用字符串作为数组引用
我有4个应用程序。让我们叫他们:App1、App2、App3和App4 对于这些应用程序,我都有一个数组:例如: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 =
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
}
}