in reply to variables not being set from a configuration file

The variables in your config file, by the power of do, will end up in package main (i.e. they are global), and hence different from the lexicals you declared. For example (from the wonderful Windows command line):

C:\tmp>echo $xx=5 >inc.pl C:\tmp>perl -lwe "do 'inc.pl'; print $main::xx" Name "main::xx" used only once: possible typo at -e line 1. 5
As you can see, the $xx=5 sets $main::xx to 5.

-- 
Ronald Fischer <ynnor@mm.st>