When "double-clicked", exec() behaves as system() when IE is not already running, and system() behaves as exec() when IE is already running (displaying my doc in a new tab).
This happens with both original .pl script (ActivePerl) and .exe binary (pp's "parl").
Did you try the script in my first post? If not, may be you are lucky and don't have to fight against Windows, but if you have a Wintendo box with perl, save it along the first data file included in some folder, then double-click it in explorer and wait for IE to start. You should note that both programs are running together. Don't close neither of them, go to explorer window and double-click it again. This time, the program will finish as expected and IE will display a second tab with the doc.
I tried this on WinXP (Spanish) and Win2K3 (English), the same happens...
UPDATE: With behavior of exec() and system() I mean only the fact of waiting for the child process (IE) to close before exit or continue, respectively. A also tried my sample scripts on a machine with Firefox as the default web browser, and it does the same.