Another option is IPC::Open2, which is in core. This will require a bit more code, but should work:
open IN, "<", "commandfile"; # unfortunately, scalar filehandles won't
+ work this way
open OUT, ">", "logfile";
my $pid = open2(">&OUT", "<&IN", "theprogram");
waitpid $pid, 0;
You can also package your application together with module you use with the help of PAR::Packer (its installation is required only on the packager's computer). But I don't know whether it will interfere with PDK or not.
Sorry if my advice was wrong.