Thread Problem mit Config::Simple (2 answers)
Opened by Graf Herschel at 2010-09-27 11:21

Gast wer
 2010-09-27 11:54
#141532 #141532
Ich würde nicht bei jeder Abfrage eines Wertes die ganze Konfigurationsdatei neu laden. Das Kostet unheimlich zeit. Besser ist es sie nur einmal zu laden.

So würde ich es machen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/perl

use strict;
use warnings;
use Config::Simple;
use Data::Dumper;

my $conf=LoadConfig('simple.conf');
my $VAR1=GetKeyResult($conf,'param_a');
my $VAR2=GetKeyResult($conf,'param_b');
my $VAR3=GetKeyResult($conf,'param_a','SECTION_A');

print Dumper($VAR1,$VAR2,$VAR3);


sub LoadConfig
{
  my $file=shift;
  my $conf={};
  Config::Simple->import_from($file,$conf) or die Config::Simple->error();
  return $conf;
}

sub GetKeyResult
{
  my $conf=shift;
  my $key=shift;
  my $section=shift || 'default';

  # ist ein key vorhanden?
  return [] unless($key);
  # ist der config-Hash definiert?
  return [] unless($conf && ref($conf) eq 'HASH');
  # gibt es den Eintrag?
  return [] unless(exists($conf->{"$section.$key"}));

  # wert holen
  my $val=$conf->{"$section.$key"};
  # Ist es eine Arrayreferenz? wenn nicht in ein anonymes Array packen
  $val=[$val] unless(ref($val) eq 'ARRAY');
  # wert zurückgeben
  return $val;
}

Last edited: 2010-09-27 11:57:37 +0200 (CEST)

View full thread Problem mit Config::Simple