小编Akh*_*hil的帖子

使用Perl的动态范围时如何避免全局变量声明?

我正在尝试编写一个perl脚本,该脚本调用在其他地方(由其他人)编写的函数,该函数操作我脚本范围内的一些变量.假设脚本是main.pl并且函数在那里funcs.pm.我main.pl看起来像这样:

use warnings;
use strict;

package plshelp;
use funcs;

my $var = 3;
print "$var\n";   # <--- prints 3

{                 # New scope somehow prevents visibility of $pointer outside
    local our $pointer = \$var;
    change();
}

print "$var\n";   # <--- Ideally should print whatever funcs.pm wanted
Run Code Online (Sandbox Code Playgroud)

出于某种原因,使用会local our $pointer;阻止$pointer范围外的可见性.但是如果我只是使用our $pointer;,变量可以在main.pl使用范围之外看到$plshelp::pointer(但不是在funcs.pm,所以无论如何它都是无用的).作为附注,有人可以解释一下吗?

funcs.pm 看起来像这样:

use warnings;
use strict;

package plshelp;

sub change
{
    ${$pointer} …
Run Code Online (Sandbox Code Playgroud)

perl scope global-variables dynamic-scope

1
推荐指数
1
解决办法
150
查看次数

标签 统计

dynamic-scope ×1

global-variables ×1

perl ×1

scope ×1