Thread Hat Perl events? (12 answers)
Opened by bianca at 2021-10-27 09:35

bianca
 2021-11-13 09:57
#194061 #194061
User since
2009-09-13
7016 Artikel
BenutzerIn

user image
Hi!

Bin nicht sicher ob schon eine Lösung dabei ist, ich beschreibe es mal genauer:
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
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;

my $test = unterprog();
say "Erg.: ".(defined $test ? $test : '');

sub unterprog {
    my $back = 0;

# hier möchte ich eine Art Handler platzieren:
    handler_variable ($back ne '0') {
        # hier passiert noch mehr
        return $back;
    }

# hier folgt jetzt viel Code
# und bei jedem Kommando kann es zu Fehlern kommen
# und immer wenn das passiert soll quasi ein return
# ausgeführt werden
# z. B.:
    unlink('diese_datei_gibt_es_aber_nicht') or $back = "$! in ".__LINE__;
# bitte nicht auf das Beispiel antworten,
# das ist wie vesagt nur ein BEISPIEL

# um das selbe Ergebnis ohne den Handler
# zu erreichen müsste ich schreiben:
    unlink('diese_datei_gibt_es_aber_nicht')
    or do {
        $back = "$! in ".__LINE__;
        # wir nehmen an, dass hier mehr passiert
        # als nur diese Zuweisung
        return $back;
    };

    return "Ende erreicht mit \$back='$back'";
}


Hier erwarte ich bei Mißerfolg von unlink ein Feuern des Handlers ausgelöst durch $back = "$!... in Zeile 23 und nicht erst in 31.
Und das Ziel ist damit, dass man nicht bei jedem Kommando ein aufwendiges or do {} schreiben braucht sondern nur kurz und knackig den Fehler in $back schiebt und es geht "automatisch" zurück.

Danke
10 print "Hallo"
20 goto 10

View full thread Hat Perl events?