http://www.perlmonks.org?node_id=938719


in reply to Perl/Tk System Function Error

On my XP system, removing the double-quotes makes it run calc. With the double-quotes I get a command window. Not sure why, but

system(qq{start C:\\Windows\\system32\\calc.exe});
is the way to go. The same behavior occurs at the command prompt: with quotes, cmd window; without, calc.

Replies are listed 'Best First'.
Re^2: Perl/Tk System Function Error
by afoken (Chancellor) on Nov 18, 2011 at 10:20 UTC
    removing the double-quotes makes it run [...] Not sure why

    Simple: The first argument of the start command, when put in double quotes, is taken as the requested window title. If you need to quote the command to be started, you also need to provide a dummy window title, i.e.:

    system('start "" "C:\\program files\\my application\\kaboom.exe" /foo +/bar');

    Also note that system() has a special case on Windows to run a program (with arguments) without waiting for it, and without having to mess with any shell or the braindead start program. This is documented in perlport:

    system(1,'C:\\program files\\my application\\kaboom.exe','/foo','/bar' +); # ^-- the 1 is the special case for Windows

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)
Re^2: Perl/Tk System Function Error
by Anonymous Monk on Nov 18, 2011 at 09:07 UTC

    Because you, like many, have not read "help start" or "help cmd"

    I use Proc::Background

Re^2: Perl/Tk System Function Error
by perl.j (Pilgrim) on Nov 18, 2011 at 01:10 UTC
    It works! Thanks!
    --perl.j