2021-10-27T07:35:39
biancaGuten Morgen!
Angenommen ich habe eine sub in der es eine Variable $back gibt. Nun möchte ich, dass return 0 gefeuert wird sobald $back sich ändert, um mir Quellcode zu sparen. Gibt es das in Perl >= 5.30.2?
Ebenfalls guten Morgen!
Die Sache ist mir nicht so ganz klar: Was heißt "
return 0 gefeuert wird"? Heißt das "verlasse die gerade aktive
sub, egal, welche das ist" - aber wie willst Du dann weitermachen? Wer außer Deinem eigenen Code kann denn
$back ändern?
Aber mal zu den Möglichkeiten: Du kannst in Perl eigenen Code ausführen lassen, wenn sich eine Variable ändert. Das geht erstens mit dem eingebauten
perlfunc tie (etwas umständlich) oder komfortabler mit dem Modul
Variable::Magic. Komfortabler deswegen, weil Du nur für das "interessante" Ereignis Code schreiben musst, während du bei
tie (oder dem zugehörigen Core-Modul
Tie::Scalar) eine Klasse für
alle Zugriffe auf
$back erstellen musst. Gleich das erste Code-Stück in der
Synopsis von Variable::Magic enthält ein Beispiel für eine Aktion beim Setzen einer Variablen.