Thread Regex - Exakten String ersetzen (6 answers)
Opened by YAPD at 2021-04-18 18:02

Gast YAPD
 2021-04-18 18:02
#193219 #193219
Hi Leute,

ich hoffe, es geht Euch gut in Corona Zeiten. :)

Ich habe mal eine kurze Frage zu Regex. Und zwar
möchte ich für meine Log - Verarbeitung das Package
aufsplitten.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my $LH_Module = ( caller( 1 ) )[ 3 ]; # Das ist der Aufruf

my $LH_Package = $LH_Module;
print "Package : $LH_Package" , "\n";

# Bestimmung des Caller - Aufrufs ( Sub - Routine )
my $LH_Caller = ( split( /::/ , ( caller( 1 ) )[ 3 ] ) )[ -1 ];
print "Caller : $LH_Caller" . "\n";

# Entfernung der Sub - Routine aus der Modul - Bezeichnung
$LH_Module =~ s/\::$LH_Caller//;
print "Module : $LH_Module" . "\n";


Beispiele :
Kernel::Extensions::IMCR
Kernel::Extensions::IMCR::Tester

Mein Problem ist dass, wenn ich z.B. den Log - Handler vom
Package Kernel::Extensions::IMCR lade, ist alles richtig :

> Package : Kernel::Extensions::IMCR::Loader
> Caller : Loader
> Module : Kernel::Extensions::IMCR

Lade ich den Log Handler aber über das Package Kernel::Extensions::IMCR::Tester in der Sub - Routine
Test( ), ersetzt er mir nicht nur die letzte Sub sondern
auch den Namen "Tester" davor :

> Package : Kernel::Extensions::IMCR::Tester::Test
> Caller : Test
> Module : Kernel::Extensions::IMCRer::Test -----> Hier müsste
"Kernel::Extensions::IMCR::Tester" stehen.

Ich weiss, dass ich Regex so ausführen muss, dass er den exakten
String ersetzt, also in dem Fall "::Test" und nicht "::Tester
davor ( hier bleibt ja das er übrig ).

Leider krieg ich es einfach nicht hin. :(

Ich hoffe, ihr könnt mir hier helfen.

Vielen Dank & Viele Grüße
YAPD
Last edited: 2021-04-18 18:06:07 +0200 (CEST)

View full thread Regex - Exakten String ersetzen