如何在文档根目录之外保留敏感的perl变量



在创建动态网站时,我已经使用perl作为操作MySQL文件的一种方法很多年了。当我在perl4时代学到我的技能时,我采用了一些实践,这些实践不一定是perl5.10 的方法

其中一种做法是将敏感和静态信息(如MySQL用户名和密码)作为全局标量变量存储在一个blah.cfg文件中,然后将其放置在文档根目录之外,就像我多年来所做的那样。

然后在perl的顶部附近有一行:

require "./../../data/blah.cfg";

这样我就可以使用变量来访问数据库。

当我添加时,我的问题就开始了

use strict;
use warnings;

然后我就不能拥有这些全局变量,因为它们当然会抛出错误。因此,经过今天几个小时的研究,我似乎在翻阅信息,发现"需要"不应该再使用,而应该使用"使用"。这似乎是一场火的洗礼:库、包、模块等。。。如果模块在路径之外,我需要使用FindBin来定位它,但如果我使用mod_perl。。。

有没有一种简单有效的方法来存储两个简单的变量并以安全的方式检索它们?

您可以使用一个实际的配置文件(以及类似config::Any的文件),或者如果您继续使用Perl模块,只需正确执行即可。

use strict;
use warnings;
package MyConfig;
use Exporter qw( import );
our @EXPORT = qw( %config );
our %config = (
...
);
1;

然后你可以使用

use MyConfig qw( %config );
... $config{...} ...

(不要将"Config"用作模块名称;它已经存在。)

您可以将文件路径存储在您创建的perl模块中。然后,在该模块上创建一个getter方法来返回文件路径。

在主脚本中,"使用"该模块,并在需要文件路径时调用getter。

使用该模块将类似于全局变量。文件路径将只存储在一个地方(提高了维护),但它可以在任何地方访问(甚至是其他脚本)。

我不记得使用Perl了,但我认为您必须在作为整个系统一部分的任何单独脚本中"使用"您的模块。

最好将配置数据存储在配置文件中,而不是其他脚本中。有相当多的模块可以为您解析配置文件。

编辑:

为什么首先要在文档根目录中包含任何代码?总的来说,这似乎是个坏主意,不管整个敏感的配置问题如何。

最新更新