Thread Übergabe Hash-Struktur an Methode (33 answers)
Opened by mtbf40 at 2015-05-19 15:44

hlubenow
 2015-05-21 17:09
#181125 #181125
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
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)

View full thread Übergabe Hash-Struktur an Methode