Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re^3: exec() on Windows

by BrowserUk (Pope)
on May 25, 2010 at 22:18 UTC ( #841645=note: print w/replies, xml ) Need Help??

in reply to Re^2: exec() on Windows
in thread exec() on Windows

It worked only if called fom a CMD console

So, it works then.

but not if I double click over it or it's shortcut...

Why would you double click a .pl file instead of double-clicking the .html file?

Why would you set up a short-cut to point at file to load a .html file, when you could just point the shortcut at the ,html file?

(If you really need to do these things, read your docs about wperl.exe).

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

Replies are listed 'Best First'.
Re^4: exec() on Windows
by vitoco (Friar) on May 25, 2010 at 23:30 UTC

    Well, my script is actually a PAR::Packer's pp generated exe file, installed with a shortcut icon in some operators' desktops. It collects some logs left by other running systems according to some manual schedules, cross all that info, generates a report in HTML format, and saves it in a shared file repository. The number of times it runs every day, depends on the weekday. As the reports must be kept, different names are used (adding the timestamp for example).

    Every night, one of the sysops has to check how the thing is going, and the fastest and simplest way for them is to double-click that icon and wait for the report to be displayed (instead of searching the repository for it as a second step).

    Don't say it loud, but perl is not (officially) allowed in our systems, so we are hiding our scripts with PAR ;-)

      Okay. So when you say "it doesn't work when double-clicked", what actually happens?

        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.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://841645]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (9)
As of 2017-03-27 02:58 GMT
Find Nodes?
    Voting Booth?
    Should Pluto Get Its Planethood Back?

    Results (315 votes). Check out past polls.