首页 文章

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

提问于
浏览
2

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

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

相关问题