当我在循环中设置变量时,如何访问循环外的变量?

时间:2009-09-15 18:41:04

标签: perl loops

我写了一个快速的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 个答案:

答案 0 :(得分:14)

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);