Thread Subroutine calls über mehrere packages / module
(7 answers)
Opened by Haspasus at 2009-11-17 22:15
Hallo!
Ersteinmal "Danke" für deine Antwort. Ich arbeite noch nicht lange mit Perl, insofern ist es gut möglich, dass ich Module falsch einsetze. Ich habe nun den Code etwas angepasst, sodass ich dem Modul1 (bzw einem Objekt der Klasse Modul1), eine Referenz auf das Modul2 und deen Methodennamen übergebe: main.pl 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 #!/usr/bin/perl -w use Test::Case::Modul1; use Test::Case::Modul2; my $modul1 = new Test::Case::Modul1; my $modul2 = new Test::Case::Modul2; $modul1->setzeNachricht("super duper hyper fehler text!"); $modul1->setzeFehlerbehandlung($modul2,"fehlerbehandlung"); $modul1->printMessage(); sub fehlerbehandlung { my $nachricht = shift; print "-" x 30; print "\n"; print "Fehlerbehandlung in der Hauptroutine\n"; print "Aufruf von: ".caller(0)."\n"; print "Nachricht: $nachricht\n"; print "-" x 30; print "\n"; } Modul1.pm 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 package Test::Case::Modul1; my $fehlerHandler; my $fehlerfunc; my $msg = "testfehler"; sub new { my $self = shift; return $self; } sub setzeFehlerbehandlung { my $self = shift; $fehlerHandler = shift; $fehlerfunc = shift; } sub printMessage { my $self = shift; $fehlerHandler->${fehlerfunc}($msg); } sub getError { my $self = shift; return $msg; } sub setzeNachricht { my $self = shift; my $text = shift; $msg = $text; } 1; So funktioniert das ganze. Aber ist das so sauber? Oder habe ich das mit der Instanzübergabe falsch verstanden? Gruß Haspasus |