我有一个文本文件,其中包含多个文件的物理路径(位置/定义)。我只是使用“reqiure”来包含这个文本文件,然后使用在那里声明的变量。但是,现在我正在尝试使我的代码模块化(还不是那么远)。解决这个问题的最佳方法是什么。
我在那里制作了单独的包并定义了子例程。我需要在所有包和 perl 文件中使用相同的定义文件。我只能以一种方式使用变量,无论是在模块声明中还是在调用这些模块中的子例程的 perl 脚本中。
谢谢你。
我有一个文本文件,其中包含多个文件的物理路径(位置/定义)。我只是使用“reqiure”来包含这个文本文件,然后使用在那里声明的变量。但是,现在我正在尝试使我的代码模块化(还不是那么远)。解决这个问题的最佳方法是什么。
我在那里制作了单独的包并定义了子例程。我需要在所有包和 perl 文件中使用相同的定义文件。我只能以一种方式使用变量,无论是在模块声明中还是在调用这些模块中的子例程的 perl 脚本中。
谢谢你。
这是一个可能有用的小用例。您有 - 一个模块 (.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;
这是一个非常简单的结构,但应该会引导您走得更远。另外,请阅读此处。
rbo