Thread Warum kein $@ statt $! (29 answers)
Opened by rosti at 2014-09-23 13:04

rosti
 2015-01-10 14:20
#179167 #179167
User since
2011-03-19
3197 Artikel
BenutzerIn
[Homepage]
user image
hi,
en anderes Beispiel dafür, warum ein eigener, von $@ abweichender $Class::errstr schlecht ist. Das Beispiel ist Config::Tiny und $Class::errstr entspricht $Config::Tiny::errstr:

Ich habe eine eigene Methode configini() die müsste ich so aufrufen:

Code (perl): (dl )
1
2
my $cfg = main->configini("/path/cfg.ini")
     or die "Fehler: $Config::Tiny::errstr";


Zum Abfangen möglicher Fehler müsste ich $Config::Tiny::errstr benutzen, wie das der Autor der Klasse vorsieht. Meine Methode configini() ist für den AUTOLOAD in einer externen Datei definiert, dort wird auch das Modul use Config::Tiny; eingebunden.

Die Rennerei geht los, wenn ich mich, aus welchen Gründen auch immer, für ein anderes Modul entscheide, z.B. für Config::IniFiles. Dann nämlich ist $Config::Tiny::errstr nicht mehr zu gebrauchen, weil ein anderes Modul geladen wurde. Ein davon uabhängiger Aufruf sähe so aus:

Code (perl): (dl )
1
2
my $cfg = main->configini("/path/cfg.ini")
     or die "Fehler: $@";


Freilich gibts eine Lösung: Innerhalb der Funktionsdefinition lege ich $Config::Tiny::errstr um auf $@ aber warum einfach, wenns kompliziert geht ;)

View full thread Warum kein $@ statt $!