在所有包和perl脚本中使用单一定义文件

时间:2012-06-19 10:35:17

标签: perl

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

我制作了单独的包并在那里定义了子程序。我需要在所有包和perl文件中使用相同的定义文件。我只能在模块声明中或在调用这些模块中的子例程的perl脚本中使用变量。

谢谢。

1 个答案:

答案 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