我有一个文本文件,其中包含多个文件的物理路径(位置/定义)。我只是使用“reqiure”来包含这些文本文件,然后使用那里声明的变量。但是,现在我正在尝试使我的代码模块化(它不是这么远)。解决这个问题的最佳方法是什么。
我制作了单独的包并在那里定义了子程序。我需要在所有包和perl文件中使用相同的定义文件。我只能在模块声明中或在调用这些模块中的子例程的perl脚本中使用变量。
谢谢。
答案 0 :(得分:1)
这是一个可能有用的小用例。你有 - 一个模块(.pm),您的数据随处可见 - 包含子程序的一个模块(.pm) - 一个主程序(.pl)
主程序(program.pl):
use strict;
use warnings;
use Data;
printf "%s\n%s\n", $Path->{HOME}, $Path->{WORK};
use MyModule; # uses Data
printf mymoduleproc();
带子程序的模块(MyModule.pm):
package MyModule;
use strict;
use warnings;
use base 'Exporter';
our @EXPORT = qw(mymoduleproc);
use Data;
sub mymoduleproc {
return "MyModule => $Data::Path->{HOME}, $Data::Path->{WORK}"
}
1;
带有(路径)配置数据的模块(Data.pm):
package Data;
use strict;
use warnings;
use base 'Exporter';
our @EXPORT = qw($Path);
our $Path = { HOME => '/home', WORK => '/work'};
1;
这是一个非常简单的构造,但应该引导你走得更远。 另外,请read here。
RBO