1

Perlスクリプトとは別に構成可能な変数のページがある場合、それらをどのように使用できますか?

これらの変数がファイルにあるとします。

database.properties:

    database = "dbi:Oracle:host=host-321;sid=XE;port=1337","User","Passwd"

    table1 = CHANNEL

    table2 = NODE

...そして私はperlスクリプトのこれらの部分にそれらを必要としています:

my $dbh = DBI->connect($database);

open ROW,">","./report/archive/rprt-$now/row_counts.txt" or die "Unable to create file: $!";
    my $chanRows = $dbh->selectrow_array("SELECT COUNT(*) FROM $table1");
    my $nodeElemsRows = $dbh->selectrow_array("SELECT COUNT(*) FROM $table2 WHERE NODE_TYPE > 1");
    my $nodeDeviceRows = $dbh->selectrow_array("SELECT COUNT(*) FROM $table2 WHERE NODE_TYPE = 1");
    print ROW "Channels: $chanRows\n";
    print ROW "Network Elements: $nodeElemsRows\n";
    print ROW "Devices: $nodeDeviceRows";
close ROW;

明らかに、$ database、$ table1、$ table2をそのように配置するだけでは効果がないので、これを実行する正しい方法は何でしょうか。前もって感謝します。

4

1 に答える 1

3

Config::Tinyを使用できます。構成ファイルは次のようになります。

[databaseproperties]

    database = "dbi:Oracle:host=host-321;sid=XE;port=1337","User","Passwd"

    table1 = CHANNEL

    table2 = NODE

そして、スクリプトは次のようになります。

#!/usr/bin/env perl
use strict;
use warnings;
use Config::Tiny;
my $config = Config::Tiny->new;
$config = Config::Tiny->read('myconfig');
my $database = $config->{databaseproperties}->{database};
print "DATABASE = $database\n";
my $table1 = $config->{databaseproperties}->{table1};
print "TABLE-1  = $table1\n";
my $table2 = $config->{databaseproperties}->{table2};
print "TABLE-2  = $table2\n";
于 2012-06-27T13:42:34.840 に答える