将 perl 模块拆分为多个文件

zeb*_*nts 4 perl module perl-module

我是一名 Perl 新手,正在开发一个相当长的模块,我想将其拆分为多个文件,以便于维护和组织。现在看起来像这样

#ABC.pm
package ABC;

use strict;
use warnings;

my $var1;
my $var2;

sub func1 {
    #some operations on a $var
}

sub func2 {
    #some operations on a $var
}

return 1;
Run Code Online (Sandbox Code Playgroud)

我希望它看起来像

#ABC_Part_1.pm
package ABC;

use strict;
use warnings;

my $var1;
my $var2;

sub func1 {
    #some operations on a $var
}

return 1;
Run Code Online (Sandbox Code Playgroud)
#ABC_Part_2.pm
package ABC;

use strict;
use warnings;

sub func2 {
    #some operations on a $var
}

return 1;
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是让变量在单独的文件中可见。我尝试使用“我们的”来声明它们,但随后我必须使用我不想做的范围解析运算符。我想将它们视为模块文件中的局部变量,但将它们隐藏到调用脚本中。我还想在调用脚本中只包含一个,例如

#!/usr/bin/env perl
#script.pl

use strict;
use warnings;
use ABC;

func1();
func2();
Run Code Online (Sandbox Code Playgroud)

谢谢

tob*_*ink 5

\n

我遇到的问题是让变量在不同的文件中可见。

\n
\n\n

你最好的选择就是不再想要这样。

\n\n

词法变量的全部意义在于只需一小段本地可见的代码即可访问它们。需要从多个不同文件访问的变量是“代码味道”的标志。

\n\n

如果你真的确定你想要这个\xe2\x80\xa6

\n\n
\n

我尝试使用“our”来声明它们,但随后我必须使用我不想做的范围解析运算符。

\n
\n\n

是的,这应该可行,但是您需要在使用该变量的每个文件的顶部声明该变量。

\n\n
# ABC_part_1.pm\npackage ABC;\nour $foo;\n\n# code that accesses $foo goes here\n\n1;\n
Run Code Online (Sandbox Code Playgroud)\n\n

进而:

\n\n
# ABC_part_2.pm\npackage ABC;\nour $foo;\n\n# code that accesses $foo goes here\n\n1;\n
Run Code Online (Sandbox Code Playgroud)\n