Jeff, my plans are to remove *all* "use" statements from Tcl.pm.
If all else fails, please write if ($^O eq 'whatever') { require 'Config.pm'; # ... or # eval "use Config;" } No "use Config;", please. Config.pm is heavy and not always available, for some reasons. BTW there are too many startup logic dependant on many ENV variables, etc. Some cleaning should be made. Okay, I'll remove mine lines: # consideration for moveable configuration of tcl/tk # This is done before bootstraping, to make possible of searching of correct # shared libraries $Tcl::config::tcl_pm_path = [__FILE__=~/^(.*)Tcl\.pm$/i]->[0]; do "$Tcl::config::tcl_pm_path/Tcl.cfg" if -f "$Tcl::config::tcl_pm_path/Tcl.cfg"; But there are also these: our $DL_PATH; unless (defined $DL_PATH) { $DL_PATH = $ENV{PERL_TCL_DL_PATH} || $ENV{PERL_TCL_DLL} || ""; } and Tcl.xs contain some code like: dl_path = SvPV_nolen(get_sv("Tcl::DL_PATH", TRUE)); plus some registry searching in the "Software\\ActiveState\\ActiveTcl" plus some more... IMO there are too many... Especially registry setting, which will prohibit PAR usage, for example... I propose removing all ENV vars and registry vars from XS, move those to pure-perl, and Tcl.pm should pass found DLL into XS via SV. Also we need to create clear table on what needs what and remove all outside that... BR, Vadim.