Warnungen :: warn und FATAL Kategorien in Perl

8

Ich muss die Warndokumentation falsch verstanden haben. So wie ich es gelesen habe, diesen Code:

%Vor%

Sollte die 'blarg' Warnung ausgeben und sterben, da ich nach allen Warnungen gefragt habe, die tödlich sein könnten. Wenn ich den Code ausführe, bekomme ich:

%Vor%

Kann mir jemand helfen zu verstehen, warum ich nicht vor dem Tod gewarnt werden kann?

    
Josh McAdams 20.10.2009, 04:14
quelle

1 Antwort

12

Okay. Das ist hässlich. Ich hatte einen halbfertigen Beitrag, in dem ich dies als Fehler in warnings erklärte, und dann wurde mir klar, dass das nicht so ist, es ist nur ein wirklich Böses in der Art, wie warnings funktioniert.

Warnungen suchen nach einem relevanten Stapelrahmen, um die Warnbits von% c_de% 's Aufrufenden aufzurufen. Die Idee ist, dass Sie ein Modul schreiben und Sie in Ihren Funktionen warnings::warn oder warnings::warn verwenden und ob die Warnung gedruckt (oder fatal) ist, hängt von der Einstellung warnings::warnif im Bereich in ab Code, der das Modul verwendet . Es gibt keine Option dafür, dass es bei use warnings statt bei caller(1) beginnt, daher ist der gewünschte Effekt nicht möglich.

Ein Beispiel für Code, der funktioniert (und demonstriert, wie diese Schnittstelle von jedem, der sie geschrieben hat, verwendet werden sollte):

%Vor%

Und Sie können die Funktionsweise nicht dadurch untergraben, dass Sie nur eine weitere Ebene von Unterprogrammen hinzufügen, weil es die Flags des ersten Aufrufers eines anderen Pakets vom Aufrufer von caller(2) / übernimmt. warn / warnif / etc.

    
hobbs 20.10.2009, 04:48
quelle

Tags und Links