Я написал быстрый скрипт Perl для запроса локальных DNS-серверов для IP-адреса, и у меня есть переменная, которая должна быть объявлена в рамках цикла, но она, похоже, не находится в области вне цикла , Компилятор возвращает ошибкиКак я могу получить доступ к переменной вне цикла, когда я устанавливаю внутри нее внутри цикла?
Global Symbol "$ipAddr" requires explicit package name
Вот код
my $resolver = Net::DNS::Resolver->new;
my $dnsQuery = $resolver->search($hostIP[0]->getFirstChild->getData);
if ($dnsQuery) {
foreach my $rr ($dnsQuery->answer) {
next unless $rr->type eq "A";
my $ipAddr = ip2dec($rr->address);
}
}
print("::".$ipAddr);
Как бы это было возможным объявить переменную таким образом, что будет доступен из внешней петли?
mobrule есть ответ на поставленный вопрос ниже. Я бы предложил еще одно предложение для кода ... добавить «последний»; как последняя строка внутри цикла foreach. В большинстве случаев здесь это, скорее всего, не большая проблема производительности, так как в вашем ответе есть мало вероятных записей ресурсов, но хорошо, когда вы делаете то, что вам нужно делать, это хорошо, когда вы оставляете циклы. Это может реально повлиять на тяжелые циклы, которые могут выполняться миллионы раз, особенно если вы сделали это после второй итерации. В противном случае ваш код выглядит великолепно. – mikegrb