Thread Aufruf von Sub - Klassen mit variablen Namen (5 answers)
Opened by YAPD at 2021-05-11 16:02

YAPD
 2021-05-11 16:02
#193259 #193259
User since
2015-09-20
146 Artikel
BenutzerIn

user image
Hi liebe PERL Community,

ich habe eine Anwendung entwickelt, die eigentlich bereits stabil
läuft, doch bei der Einbindung der Module habe ich im Zusammenhang
mit "use base qw" ein Problem, das ich nicht in den Griff bekomme.

Code: (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
package Kernel::Config;

use strict;
use warnings;

use base qw( Kernel::Config::Defaults );

# --------------------------------------------------------------------------------------------------------------------------------------------------------

sub Config_Loader {

my ( $Typ, %Parameter ) = @_;

my $Self = { };
bless( $Self , $Typ );

# --------------------------------------------------------------------------------------------------------------------------------------------------------

$Self -> { Home } = 'E:/Programmierung/Aktuell';
$Self -> { Debug_Modus } = 'N';

$Self -> Defaults_Loader( \$Self );

# --------------------------------------------------------------------------------------------------------------------------------------------------------

# Rückgabe der Config - Werte
return $Self;

}


Wie ihr seht, rufe ich in meiner Config - Datei die Sub - Routine "Defaults_Loader" aus der Klasse "Kernel::Config::Defaults" auf :

Code: (dl )
1
2
3
4
5
use base qw( Kernel::Config::Defaults );

...

$Self -> Defaults_Loader( \$Self );


Problematik :

Ich habe in einer anderen Klasse ( SQL ) im Grunde das gleiche
Prinzip, nur dass die Klasse nicht eindeutig ist.

Die Klassen können, je nach Konfiguration, sein :

my $Class = Kernel::Internals::DB::mysql
my $Class = Kernel::Internals::DB::postgres
my $Class = Kernel::Internals::DB::sqlserver

Damit ich die Variablen bequem nutzen kann, will ich den Aufruf
"$Self -> Defaults_Loader( \$Self );" beibehalten. Aber wie
kann ich das umsetzen.

Der Befehl "use base qw( $Class )" funktioniert so ja leider nicht.

Diverse Versuche mit @INC und @ISA scheiterten leider wie z.B. die
Klasse mit "$INC{ Module } = $Class oder @ISA = ( "$Class" ) zu den globalen Variablen hinzuzufügen.

Ich hoffe, ich habe es gut genug erklärt und ihr könnt mir helfen.

Vielen Dank !

Beste Grüße
YAPD
Last edited: 2021-05-11 16:11:04 +0200 (CEST)
Yet Another Perl Developer

View full thread Aufruf von Sub - Klassen mit variablen Namen