Wenn ich jetzt strict mit use einbinde wird abgebrochen, wenn ich es stattdessen mit require einbinde laeuft das Script bis zum Ende durch. Kann mir jemand erklaeren, wo hier der Unterschied zwischen require und use liegt?
Eine use-Anweisung wirkt wie folgt:
BEGIN {
require Module;
import Module LIST;
}
Dagegen wird require zur Laufzeit ausgeführt. Bei Modulen ist das meistens kein Problem, wohl aber bei Pragmas wie strict, da diese direkt Einfluss auf das Verhalten des Compilers nehmen (siehe perlvar $^H). Und nichts anderes tut strict.pm: Es manipuliert in Abhängigkeit seines Aufrufs Compiler-Optionen, nicht mehr.
Dies funktioniert aber logischerweise nur innerhalb von BEGIN-Blöcken, nicht aber während der eigentlichen Kompilierung des Scriptes. Man muss sich das wie ein Kommandozeilenparameter vorstellen, den kannst du auch nur bei Programmaufruf mitgeben, wenn das Programm einmal läuft, dann mit den festgelegten Optionen.
Siechfred
Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.