in reply to Re^2: Program Not Found when run from browser page
in thread Program Not Found when run from browser page

Escapes are not a matter of interpolation.

Even inside single quotes you'll need to double backslashes, otherwise it wouldn't be possible to escape a single quote.

Consider 'O\'Reilly'

Probably you are confusing it with the worse "slasheritis" in other languages.

Cheers Rolf
(addicted to the Perl Programming Language :)
see Wikisyntax for the Monastery

Replies are listed 'Best First'.
Re^4: Program Not Found when run from browser page
by choroba (Cardinal) on Nov 13, 2024 at 21:51 UTC
    In fact, no. If the path doesn't contain single quotes, you don't need to double the backslashes:

    $ perl -wE 'say q(C:\Windows\System)' C:\Windows\System

    I agree it's not exactly interpolation, but still.

    map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]
      Yeah, it's true, you don't need to double the backslash if they are enclosed in single quotes or q(), however if the backslash happens to be the last character in the string, then it must be double. So, it's just easier to remember to always double it.

      Incorrect: 'C:\Windows\'

      Correct: 'C:\Windows\\'

      Incorrect: q(C:\Windows\)

      Correct: q(C:\Windows\\)

      This is easier to rememeber: 'C:\\Windows\\' or "C:\\Windows\\"

        It is worth mentioning that most Windows programs (nearly all, with the notable exception of CMD.EXE and Explorer.exe) do understand forward slashes as "path separator".

        So, for most system functions outside of Batch "Scripts", you can use "C:/Windows/".

        If in doubt, use e.g. catfile/catdir of File::Spec or canonpath of Path::Tiny.

        Update: in Stackexchange's "Retrocomputing" section someone writes the following, which coincides with my experience:

        All dedicated path names, like in syscalls, can be written with either slash. It's only within the command line scan of each command, that simple slashes get interpreted as switch indicators.