Cita: open(ARCHIVO, ">>prueba2.bat") || die "No se pudo abrir el archivo";
print ARCHIVO "start programa.exe /p:$numero /m:$mensaje -h \n";
close(ARCHIVO);
que se supone que hace eso ? de donde sacas las variables $numero y $mensaje ? debes cargarlas a través del módulo CGI...Checkea las FAQs de este foro que expliqué como hacerlo...
Saludos