http://www.perlmonks.org?node_id=11107530


in reply to [implementation specific to windows] writing a proper batch file for terminal start-up

Are you using the portable edition of Strawberry perl? If so then you might be able to simplify things by calling your code after running the portable shell (which looks like the original source for your script, BTW - https://github.com/StrawberryPerl/Perl-Dist-Strawberry/blob/master/share/portable/portableshell.bat). Doing that ensures that the Strawberry perl is the first on the path, as are its utilities, and so should avoid conflicts between perl versions.

WRT setting PERL5LIB etc to blank, this is probably to avoid conflicts between perl versions. If you know your PERL5LIB variable is always for this version of Strawberry perl then you could comment it out. But then when you upgrade or change your perl, you will hit new conflicts.

If you have your code set up as a standard directory structure, e.g. with the script in ./bin and any modules under ./lib, then you can use libraries like rlib to add the relative paths in your calling script. That avoids setting any environment variables, global or within a batch script.

e.g. for a file in /somepath/bin/script.pl:

use strict; use warnings; use rlib; # add /somepath/lib to @INC # do stuff

WRT a single common place for new modules, that way would lead to more conflicts between the differing perl versions, mostly for XS modules, so is best avoided.