2010-04-05 8 views

Odpowiedz

9

Moduł Fatal został dodany do rdzenia Perla w wersji 5.05 (1998). Moduł Fatal ma pewne istotne niedociągnięcia i niespójności w swoim API, które nie mogły zostać naprawione w sposób kompatybilny wstecz (tj. Naprawienie interfejsu API zepsułoby istniejący kod, który używał Fatala).

Nowszy moduł autodie został napisany, aby zapewnić bardziej spójny interfejs API i pozwolić, aby efekt pragmy był leksykalny, a nie globalny (co może mieć nieoczekiwane efekty uboczne).

Jeśli masz wybór, zdecydowanie powinieneś preferować autodie. Zostanie uwzględniony jako podstawowy moduł w nadchodzącym wydaniu Perl 5.12.

Moduł autodie wymaga Perla 5.8. Jedynym powodem, dla którego używałbyś Fatala, byłeś, gdybyś utknął z naprawdę starą wersją Perla (np. 5.6), ale 5,8 został wydany od 2002 roku, więc mam nadzieję, że tak nie będzie w twoim przypadku.

+0

@grant - bardzo pomocne wyjaśnienie – justintime

6

Cytując dokumentację Fatal

krytyczny został zastąpiony przez nowy autodie Pragma. Użyj autodie zamiast opcji Fatal. autodie obsługuje zakresy leksykalne, generuje prawdziwe obiekty wyjątku i zapewnia znacznie ładniejsze komunikaty o błędach.

2

Innym powodem korzystania autodie zamiast Fatal jest, aby uniknąć tego błędu (od sekcji BUGS z Fatal docs):

Fatal clobbers kontekstu, w którym funkcja jest wywoływana i zawsze sprawia, it kontekst skalarny, z wyjątkiem sytuacji, gdy używany jest znacznik pustki : void. Ten problem nie występuje w autodie w postaci .

Powiązane problemy