Aktuelles Verzeichnis nicht mehr Teil von @INC

25. Mai 2019 · Programmierung · andreas · Kein Kommentar

Gerade beim Wechsel zwischen verschiedenen Perl-Versionen über ein Feature (und keinen Bug) gestolpert: seit Version 5.26 ist das aktuelle Verzeichnis nicht mehr im Standard-Include-Pfad @INC enthalten.

Als Grund hierfür gibt perldelta zur Version 5.26 unschöne Begleiterscheinungen der bisherigen Vorgehensweise an:

While convenient, this has security implications: for example, where a script attempts to load an optional module when its current directory is untrusted (such as /tmp), it could load and execute code from under that directory.

Der Beitrag listet auch einige Möglichkeiten auf, wie man das bisherige Verhalten auf sicherem Weg wiederherstellen kann.

Wer es (quick & dirty) genauso unsicher wie vorher haben will, kann auch

use Cwd qw(abs_path);
use File::Basename qw(dirname);
use lib dirname(abs_path(__FILE__));

in seinem Skript verwenden.