perl - 在使用 "strict refs"时不能将字符串用作 ARRAY 引用

标签 perl

我正在尝试执行下面提到的代码并观察到错误

Can't use string ("RCSoWLAN;ePDG-2;Qguest;ASUS_ATT_"...) as an ARRAY ref while "strict refs" in use.

Perl代码

#!/perl64/bin/perl

use strict;
use warnings;

my $result_string = 'RCSoWLAN;ePDG-2;Qguest;ASUS_ATT_VOWIFI;RCS_IWLAN;Qguest;Pandora;Hydra;ASUS_ATT_VOWIFI_5G;Linksys_Performance_2.4G;RCS_NAT;ePDG7;Qguest;Pandora;Hydra;ipv6testap;Linksys_Performance_5G;ASUS_stress_5G;Hydra';

my $index = 1;

foreach ( @{ $result_string } ) {

    print "SSID[$index]: $_->{$index}->{ssid}\n";
    $index++;
}

最佳答案

如错误消息所述,@{ $result_string } 尝试取消对字符串的引用,就好像它是数组引用一样。但它只是一个字符串,所以 Perl 不能为你做这件事

看起来好像你有分号分隔的数据,最简单的方法是使用 split 将它分成字段

这应该更适合你

for ( split /;/, $result_string ) {

    print "SSID[$index]: $_\n";
    ++$index;
 }

但我无法理解您尝试使用 $_->{$index}->{ssid} 做什么。也许你会解释一下?

关于perl - 在使用 "strict refs"时不能将字符串用作 ARRAY 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50367575/

相关文章:

linux - 如何移动相对符号链接(symbolic link)?

regex - 为什么以及何时在 R 中使用可选的 perl 参数

javascript - Perl——如何将新网页滚动到上一行位置

perl - 计算数百 GB 数据中的子序列

string - 如何使用 Perl 查找文件中的特定行?

mysql - 使用 Perl 更改日期格式

perl - 在perl中从csv文件中删除多余的逗号

javascript - WWW::Scripter 作为父类导致奇怪的错误消息

windows - 如何更改 perl 为 system()、qx//和 friends 使用的系统 shell?

windows - 如何调用传递给被调用程序的 VAR=$VAL 的系统?