Невозможно использовать строку в качестве ссылки ARRAY, когда используются "строгие ссылки"
Я пытаюсь выполнить приведенный ниже код и заметил ошибку
Невозможно использовать строку ("RCSoWLAN;ePDG-2;Qguest;ASUS_ATT_"...) в качестве ссылки ARRAY при использовании "строгих ссылок".
Код 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++;
}
2 ответа
Как говорится в сообщении об ошибке, @{ $result_string }
пытается разыменовать строку, как если бы она была ссылкой на массив. Но это всего лишь строка, поэтому Perl не может сделать это за вас
Похоже, у вас есть разделенные точкой с запятой данные, и самый простой подход заключается в использовании split
разделить его на поля
Это должно работать лучше для вас
for ( split /;/, $result_string ) {
print "SSID[$index]: $_\n";
++$index;
}
но я не могу понять, что вы пытаетесь сделать с $_->{$index}->{ssid}
, Возможно, вы бы объяснили?
$result_string инициализируется строковым значением. Вы не можете разыменовать строковое значение как ссылку на массив.
Если вы хотите разбить строку на точки с запятой, используйте split:
my @results = split /;/, $result_string;
Затем вы можете перебрать @results
:
for my $result (@results) { ...
Вы не объяснили, как структура должна быть заполнена из строки, поэтому я не могу помочь вам с остальным кодом.