in reply to Opening a text file in its native application

It works for me. With or without the path; with the path equating to the cwd or not; it works.

What if any error messages are you getting when it fails?

What output do you get from the following commands?

P:\>assoc .txt .txt=txtfile P:\>ftype txtfile txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1

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.

Replies are listed 'Best First'.
Re^2: Opening a text file in its native application
by sk (Curate) on Jan 16, 2006 at 06:52 UTC
    Can you try the start command with a directory that contains a space? Start (at least for me) balks on dirnames with spaces. I am not sure if it will ever work on filenames with spaces. You have to use /d and specify the path with the space.
Re^2: Opening a text file in its native application
by FM (Acolyte) on Jan 16, 2006 at 06:43 UTC

    Hi,

    I get the same answers than you when I run the two commands you gave me.

Re^2: Opening a text file in its native application
by FM (Acolyte) on Jan 16, 2006 at 06:40 UTC

    Hi,

    It does not give me an error message. It opens a command prompt window instead of the file.

Re^2: Opening a text file in its native application
by FM (Acolyte) on Jan 16, 2006 at 06:50 UTC

    hi,

    I try the start command and opening a file and it works for me too, but in my code, I have a button that calls that sub and that might be the problem??

    Thanks,

    CL

      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.