perl - 如何将变量保持在所有子例程的范围内

标签 perl

我正在尝试创建一个像这样的模块

package MyModule;

use strict;
use Exporter;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);

$VERSION = 1.00;
@ISA = qw(Exporter);
@EXPORT = qw(func1);

sub func1 {    
    my x = shift;    
    print x;    
    func2();    
}

sub func2 {    
    print x;    
}

我从一个 perl 脚本中调用模块的 func1 并传递一个变量 x。我如何使该变量对两个子程序都可见或说出该模块内的所有函数。 请帮忙。

最佳答案

使用 myour 在文件范围内声明 $x:

my $x;

# subroutines definition

File 具有最大的词法作用域,因此该变量对其余代码可见(除非您使用 my 在某个内部作用域中重新声明它)。

关于perl - 如何将变量保持在所有子例程的范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4079148/

相关文章:

perl - 使用perl从文本中提取段落

linux - 将自定义 header 添加到目录中的特定文件

perl - 如何在独立的 Perl 脚本中使用 Mojolicious 渲染?

Linux/珀尔 : Additional output buffers other than STDOUT and STDERR?

perl - 不寻常的无符号短位交换字节顺序

Perl 禁用 shell 访问

perl - 全局符号 "@str"需要显式包名称

perl - Perl 6 中的重载常量

perl - Perl 中的列表运算符优先级

perl - 在 Perl 中,引用文件和一系列文件之间的映射