in reply to Am I missing something major here (system/exec)?

Someone may have beaten me to this one, but a simple addition of a content type should sort it out. e.g.
use strict; print "Content-type: text/html\n\n"; my $program="index.bat"; #$status= system $program or die "$program exited funny: $?";
This is likely to be because the webserver needs to know what kind of content it's dealing with. See content-type for more info......