如何从perl脚本中读取属性文件

时间:2013-06-10 11:03:28

标签: perl file

我编写了一个perl脚本,我将连接到数据库,我正在使用此语句

my $dbh = DBI->connect(
    "DBI:mysql:database=test;host=localhost;mysql_socket=/var/run/mysqld/mysqld.sock",
    "root", "password", {'RaiseError' => 1});

由于我不希望任何信息被硬编码,我想使用属性文件,我可以列出上面的详细信息(例如,数据库,主机,mysql_socket),并从脚本中读取属性文件的详细信息。如何编写属性文件并从perl脚本中读取详细信息?

4 个答案:

答案 0 :(得分:1)

有很多CPAN模块可以帮助您完成此任务。 我喜欢Config::Simple,例如:

#!/usr/bin/perl
use strict;
use warnings;
use Config::Simple;
...
my $cfg = new Config::Simple('myapp.ini');
my $user = $cfg->param('database.user');
my $connection_str = $cfg->param('database.connection');
#...

和文件myapp.ini

[database]
connection="DBI:mysql:database=test;host=localhost;mysql_socket=/var/run/mysqld/mysqld.sock"
user=root
;...

您可以使用以下命令从终端/命令提示符安装模块:

cpan install Config::Simple

yum install perl-Config-Simple

答案 1 :(得分:1)

我在使用perl-Config-Simple时遇到了问题,并决定使用Config::Properties。如果您遇到相同的问题,那么您可以尝试以下方法。

确保已安装Config::Properties。以下是如何从命令行安装的几个示例,根据您使用的操作系统,您将需要使用适当的选项:

  1. cpan Config::Properties
  2. cpan install Config::Properties
  3. yum install perl-Config-Properties
  4. 代码:

    #!/usr/bin/perl
    use strict;
    use warnings;
    use Config::Properties;
    
    open my $cfh, '<', './foo.properties' or die "unable to open property file";
    my $properties = Config::Properties->new();
    $properties->load($cfh);
    my $dbName = $properties->getProperty('database.name');
    my $dbUser = $properties->getProperty('database.user');
    

    属性文件:

    database.name=somedb
    database.user=someuser
    

    获得变量中的值后,将它们放入连接字符串中就可以了。你好了。

答案 2 :(得分:0)

var temp;
if($ENV eq "Prod"){
#Prod Configurations
temp = "Prod";
}
else{
# Stage and Test Confgurations
temp = "Stage";
}

答案 3 :(得分:0)

我的实体解决方案,从属性文件中导出一个值:

env

用法:$ kubectl exec -it envfrom-secret printenv . . USERNAME=my-app PASSWORD=39528$vdg7Jb . .