Thread Übergabe Hash-Struktur an Methode
(33 answers)
Opened by mtbf40 at 2015-05-19 15:44
Ich würde das wie gesagt innerhalb einer Klasse lösen, weil das viel übersichtlicher ist. Im folgenden hab' ich's mal nach "childmodul" gepackt, weil die Daten dort sowieso landen sollen (und ich so Deine Aufrufe in "main" so lassen konnte, wie sie waren). Man könnte aber auch eine eigene Klasse "Parameters" oder so 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 44 45 46 47 48 49 50 #!/usr/bin/perl use warnings; use strict; package childmodul; sub new { my $classname = shift; my $self = {}; $self->{ScriptParam}->{ScriptName} = $0; $self->{ScriptParam}->{Version} = "v.01"; $self->{ScriptParam}->{Hilfe}->{Usage} = "ruf mich mal richtig auf"; $self->{ScriptParam}->{Hilfe}->{Message} = 'rufe mal nach Mutti'; $self->{Runtime}->{ApplName} = "TestClass"; $self->{Runtime}->{Caller} = $^O =~ /win32/i ? $ENV{USERNAME} : $ENV{USER}; $self->{Runtime}->{Loglevel} = "höher geht nicht"; $self->{Runtime}->{RootPath} = "ganz oben"; $self->{Runtime}->{StartTime} = "am Anfang"; $self->{DBParam}->{RegPar} = "test"; $self->{DBParam}->{dbSession}->{ApplName} = "testhash"; $self->{DBParam}->{dbSession}->{Action} = "insert"; $self->{DBParam}->{dbSession}->{runtime}->{dbTable} = "INIT_REG"; return bless($self, $classname); } sub set_Data { my $self = shift; my $val = shift; my @locations = @_; my $str = "\$self"; my $i; foreach $i (@locations) { $str .= "->{$i}"; } $str .= " = \"$val\";"; eval($str) or die; } package main; my $Object1 = childmodul->new(); $Object1->set_Data('INIT_RUN', qw( DBParam dbSession runtime dbTable )); print $Object1->{DBParam}->{dbSession}->{runtime}->{dbTable} . "\n"; $Object1->set_Data('update', qw( DBParam dbSession Action )); print $Object1->{DBParam}->{dbSession}->{Action} . "\n"; $Object1->set_Data('debug', qw( Runtime Loglevel )); print $Object1->{Runtime}->{Loglevel} . "\n"; Joa, gefällt mir so ganz gut. Last edited: 2015-05-21 17:22:14 +0200 (CEST) |