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)
谢谢
\n\n\n我遇到的问题是让变量在不同的文件中可见。
\n
你最好的选择就是不再想要这样。
\n\n词法变量的全部意义在于只需一小段本地可见的代码即可访问它们。需要从多个不同文件访问的变量是“代码味道”的标志。
\n\n如果你真的确定你想要这个\xe2\x80\xa6
\n\n\n\n\n我尝试使用“our”来声明它们,但随后我必须使用我不想做的范围解析运算符。
\n
是的,这应该可行,但是您需要在使用该变量的每个文件的顶部声明该变量。
\n\n# ABC_part_1.pm\npackage ABC;\nour $foo;\n\n# code that accesses $foo goes here\n\n1;\nRun 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;\nRun Code Online (Sandbox Code Playgroud)\n