Hey,
ich schreibe gerade an einem modul, in dem an eine funktion eine variable mit folgendem aussehen uebergeben wird: teil1.teil2.teil3 usw, die laenge ist beliebig.
Die einzelnen teile der uebergebenen variable sind in einem hash eines objektes gespeichert, also so:
$object_ref->{'config_tree'}{'teil1'}{'teil2'}{'teil3'} usw, haengt vom uebergebenen parameter ab. config_tree wird immer vornedrangehaengt.
um den wert im hash zu erreichen, habe ich folgende funktion:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sub name_of_conf
{
my $p = shift; #die objektreferenz
my $path = shift;
my @name = split /\./, $value;
print "In name_of_conf: name = @name\n";
my $varname = '{"config_tree"}';
while( shift @name ) {
$varname .= "{\"" . "$value" ."\"}";
}
print "\t\tVarname = $varname,\tValue: $value,\t";
print "dereferenced: " . $p->$varname . "\n";
return $varname;
}
Ich habe hier also einen symbolischen link, der eigentlich funktionieren muesste.
wenn ich non das skript ausfuehre, kommt mir folgendes:
Can't locate object method "{"config_tree"}{"table"}" via package ...
dabei habe ich nur table als parameter uebergeben, und die funktion so aufgerufen:
$object_ref->name_of_conf( "table" );
Danke\n\n
<!--EDIT|mama|1117376766-->