#!/usr/bin/perl use warnings; use strict; use Data::Dumper; package childmodul; sub new { my ($class, $hsh_scriptParam) = @_; my @caller = caller(0); my $self; $self = { %{$hsh_scriptParam} }; bless $self, $class; $self; } sub set_Data() { use Data::Dumper; my $self = shift; # eigene Klassenreferenz holen my $args = {@_}; # Parameterliste in Hash umwandeln my $wert; if (ref($args->{block}) eq 'HASH') { no strict 'refs'; print Dumper $self->{$args->{block}}; print Dumper $args->{block}->{test}; for (@{$args->{block}->{test}}) { $wert .= '{'.$_.'}'."->"; } $wert .= '{'.$args->{key}.'}'; print "wert= $wert\n"; my $wert1 = \$wert; print "wert1= $$wert1\n"; print "wert1= $self->{${$wert1}}\n"; if ( exists($self->{$wert}) ) { # Key existiert --> Wert setzen $wert.'{'.$args->{key}.'}' = $args->{wert}; return 0; } else { return -1; } } } package main; my $hsh_runtimeParam = { ScriptParam => {ScriptName => $0 || '???', Version => 'v.01' || '???', Hilfe => {Usage => 'ruf mich mal richtig auf', Message => 'rufe mal nach Mutti'}, }, Runtime => {ApplName => 'TestClass', Caller => $^O =~ /win32/i ? $ENV{USERNAME} : $ENV{USER}, Loglevel => 'höher geht nicht', RootPath => 'ganz oben' || '???', StartTime => 'am Anfang' || '???', }, DBParam => {RegPar => 'test', dbSession => {ApplName => 'testhash', Action => 'insert', runtime => {dbTable => 'INIT_REG'} } } }; my $Object1 = childmodul->new($hsh_runtimeParam); $Object1->set_Data(block => {test => [ 'DBParam', 'dbSession', 'runtime' ]}, key => 'dbTable', wert =>'INIT_RUN');