Two problems:
1. Runtime.exec(String) attempts to parse the parameter in the command to be run and it's arguments; it is performing additional escapes on your "-e" parameter. Do this instead:
> String[] hello = {"perl", "-e \"open(INFO, '>>info.txt');\""};
> Process p = r.exec(hello);
You should get the desired results.
2. Make output a StringBuffer instead of a String, and do this:
> while ((emsg = in2.readLine()) != null)
> output.append(emsg);
The code as you wrote it is inefficient - a new String object gets created for every line read from in2.readLine(). Switching to a StringBuffer will yield measurable improvements in speed and memory usage, especially if the output from the perl script is many lines long.
Erik