我正在尝试执行下面提到的代码并观察到错误
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/