Как я могу получить доступ к переменной вне цикла, когда я установил в ней внутри цикла? - PullRequest
2 голосов
/ 15 сентября 2009

Я написал быстрый 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 );

Как можно было бы объявить переменную таким способом, который был бы доступен извне цикла?

1 Ответ

14 голосов
/ 15 сентября 2009

Поместите объявление my $ipAddr вне цикла:

my $dnsQuery = $resolver->search($hostIP[0]->getFirstChild->getData);
my $ipAddr;
if ($dnsQuery) {
        foreach my $rr ($dnsQuery->answer) {
                next unless $rr->type eq "A";
                $ipAddr = ip2dec($rr->address);
        }
}
print("::".$ipAddr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...