2

データベースに接続する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

4 に答える 4

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
于 2013-06-10T11:16:23.123 に答える
1

使用に問題があり、代わりperl-Config-Simpleに使用することにしました。Config::Properties同じことが発生している場合は、次の方法を試すことができます。

Config::Propertiesがインストールされていることを確認してください。以下は、コマンド ラインからインストールする方法のいくつかの例です。使用している OS に応じて、適切な選択肢を使用する必要があります。

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

コード:

#!/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

変数に値を取得したら、それらを接続文字列に入れれば、準備完了です。

于 2014-09-30T23:07:43.383 に答える
0

私のレンガとモルタルのソリューションは、プロパティ ファイルから 1 つの値をエクスポートします。

#!/usr/bin/perl
use strict;
use warnings;

my $line;
foreach $line (<STDIN>) {
  chomp($line);
  if(my $match = $line =~ /^(.*)=(.*)$/){
    my $key = $1;
    my $value = $2;
    if ($ARGV[0] eq $key) {
      print "$value\n";
      exit 0;
    }
  }
}

使用法:perl script.pl mykey < file.properties

于 2020-03-17T11:28:50.337 に答える