in reply to Issue with env variables set through dos batch
You can run a perl script in the child process, which can for example use DATA::Dumper or JSON to store multiple environment variables from %ENV, reliably, and either save that into a temporary file where your parent perl script can read it in and parse it easily; or output it on STDOUT so processing the data via backticks is possible. Hell, you can probably just simply use set as the last command in the batch script to get a complete list of environment variables.
BTW as $scriptDir is set to cwd it is unnecessary to use it in your call to system; though in Unix you will have to use "./" instead. And you can always use catfile from File::Spec or File::Spec::Functions to join parts from file paths portably.