Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 全局数据库连接参数的存储位置_Perl_Security_Database Connection - Fatal编程技术网

Perl 全局数据库连接参数的存储位置

Perl 全局数据库连接参数的存储位置,perl,security,database-connection,Perl,Security,Database Connection,是否有在perl中存储数据库连接参数和其他全局设置的约定?类似于.NET的.config文件吗 背景:我继承了一个基于perl的大型应用程序,它有一堆cgi脚本和几个后台服务,所有这些服务都有硬编码的数据库主机名、用户名和密码。我希望找到一个单一、安全的地方来存储这些内容,如果可能的话,还希望遵守perl约定。我对perl没有太多经验,谷歌似乎也没有让我就此达成共识。到目前为止,这就是我得到的: 创建一个名为config.pl的文件。将其放置在所有脚本均可访问的位置,将权限降低到所有脚本读取它所

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


背景:我继承了一个基于perl的大型应用程序,它有一堆cgi脚本和几个后台服务,所有这些服务都有硬编码的数据库主机名、用户名和密码。我希望找到一个单一、安全的地方来存储这些内容,如果可能的话,还希望遵守perl约定。我对perl没有太多经验,谷歌似乎也没有让我就此达成共识。

到目前为止,这就是我得到的:

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

根据:

将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});

查看CPAN上的
Config::
名称空间,例如Config::Multi、Config::Settings、Config::ini文件等