Thread Ist Module::Load unsicher
(37 answers)
Opened by Max_Perlbeginner at 2017-09-06 14:28
eval "use $module;1" macht ja auch nichts weiter als den String als Code zu interpretieren und wenn das Compilieren erfolgreich war, die letzte Anweisung zurückzugeben. So wird die 1 nach dem Semikolon als letzte Anweisung betrachtet und zurückgegeben.
gibt also 99 zurück. Bezüglich generellen Kompilierverhalten ist zu sagen, dass sämtliche in plain notierte use Anweisungen als Erstes ausgeführt werden bevor überhaupt irgendwelche Variablen initialisiert werden. Ein "use $module" jedoch nicht weil das für den Compiler einen String bzw. Literal darstellt. eval "use xy" ermöglich also lediglich ein nach dem BEGIN{} Block späteres Nachladen vom Code der mit use eingebunden werden soll. Was mit require aber auch ohne eval möglich ist. Ein eval "require $module; 1" ist unsinnig. MfG |