sk hit the nail on the head. The start command appears to have problems with paths that contain spaces, even if you quote them. However, I have found that it you quote the individual element of the path that contains the space, it then works.
So, for the path c:\program files\junk.txt, if you issue the command
system 'start', '"c:\program files\junk.txt"';
it fails, but if you issue the command
system 'start', 'C:\"program files"\junk.txt';
It succeeds. So you would need to modify your quoting mechanism to be something like this (untested):
sub logfile{
my $file = "$gGui{complogpath}/$gGui{complog}.txt";
my @args = ("start",$file);
for (@args) {
s[
( [\\/] ) ## A path delimiter
( [^\\/]* \s [\\/]* ) ## Two or more non delimiters
## including a space
( [\\/] ) ## Another delimiter
][$1"$2"$3]gx; ## Quote the path element
};
system(@args) == 0
or warn "Couldn't launch '$file' : $!/$?/$^E";
}#logfile
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
|