0

我有一个文本文件,其中包含多个文件的物理路径(位置/定义)。我只是使用“reqiure”来包含这个文本文件,然后使用在那里声明的变量。但是,现在我正在尝试使我的代码模块化(还不是那么远)。解决这个问题的最佳方法是什么。

我在那里制作了单独的包并定义了子例程。我需要在所有包和 perl 文件中使用相同的定义文件。我只能以一种方式使用变量,无论是在模块声明中还是在调用这些模块中的子例程的 perl 脚本中。

谢谢你。

4

1 回答 1

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;

这是一个非常简单的结构,但应该会引导您走得更远。另外,请阅读此处

rbo

于 2012-06-19T13:38:40.143 回答