2011-02-27 110 views
2

在perl中是否存在数据库连接参数和其他全局设置的约定?类似于.NET的.config文件?在哪里存储全局数据库连接参数

背景:我已经继承了一个大型的基于perl的应用程序,它有一堆cgi脚本和几个后台服务,所有这些服务都具有硬编码的数据库主机名,用户名和密码。我希望找到一个安全的地方来存储这些地方,并且如果可能的话,还要坚持perl惯例。我对perl没有太多的经验,而且谷歌似乎并没有把我引向这个约定。

+1

看看配置''::命名空间在CPAN例如Config :: Multi,Config :: Settings,Config :: IniFiles等http://search.cpan.org/search?query=Config%3A%3A&mode=module – jfs 2011-02-27 22:07:02

回答

6

这是我到目前为止有:

创建一个名为config.pl。将其放置在所有脚本均可访问的位置,从而降低所有脚本读取它所需的最低限度的权限。

this guide on perlmonks

让config.pl哈希的内容:

dbserver => 'localhost', 
db   => 'mydatabase', 
user  => 'username', 
password => 'mysecretpassword', 

然后在每个脚本:

use strict; 

# The old way.... 
#my $dbh = DBI->connect("DBI:mysql:database=mydatabase;host=localhost", "username", "mysecretpassword"); 

# The new way 
my %config = do '/path/to/config.pl';  
my $dbh = DBI->connect("DBI:mysql:database=".$config{db}.";host=".$config{dbserver}."", $config{user}, $config{password});