Thread Warum immer noch true am Ende bei Perl-Modulen nötig? (31 answers)
Opened by GwenDragon at 2014-09-06 11:32

rosti
 2014-09-06 12:09
#177114 #177114
User since
2011-03-19
3492 Artikel
BenutzerIn
[Homepage]
user image
Quote
Warum muss ein Perl-Modul immer noch true am Ende ausgeben?


Damit der Compiler feststellen kann, ob die darüber notierte Codesource fehlerfrei kompiliert werden konnte. Es gibt drei Möglichkeiten zum Einbinden von code: use, require, do

Mit use und require wird die Source nur einmal kompiliert, ein interessanter Unterschied ist der:
use liefert nur den wahren Wert der letzten Anweisung, gewöhnlich ist da 1; notiert,
require liefert die letzte wahre Anweisung, das kann auch eine Code-Referenz sein, ein Typeglob oder eine beliebige Referenz.

Beim zweiten Aufruf require Datei; wird jedoch stets eine 1 geliefert, auch wenn die letzte Anweisung in der Datei eine Referenz darstellt. Mit do Datei; hingegen wird die Source der Datei immer wieder aufs Neue kompiliert.

In Dateien, die mit use eingebunden werden, macht es keinen Sinn, etwas Anderes als 1; als letzte Anweisung zu notieren, denn der return-Value ist immer 1, auch dann, wenn 123; oder {}; notiert wurde.

In Dateien, die mit require eingebunden werden, macht es jedoch schon Sinn, eine Referenz oder einen Typeglob zurückzugeben, denn damit lässt sich Einiges vereinfachen, so nutze ich dieses Verhalten in meinem Framework für AUTOLOAD-Methoden.
http://rolfrost.de/reqauto.html

--rosti

View full thread Warum immer noch true am Ende bei Perl-Modulen nötig?