Leser: 20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# IN: [0]filename,[1]key, [2]section
sub inc_CFILE_GetKeyResult()
{
my (%res)=();
my($sect)="default";
Config::Simple->import_from($_[0],\%res) or die Config::Simple->error();
# setze falls section gewünscht
if($_[2])
{ $sect=$_[2]; }
# Hier möchte ich immer ein array zurückgeben, das sich nur auf einen key bezieht. Wie gebe ich das zuverlässig zurück ??
}
1
2
3
4
5
my $res = &inc_CFILE_GetKeyResult($CFILE,0,"param_a");
# Ausgabe der/des Resultate(s)
foreach(@{$res})
{ print("$_\n"); }
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; }