in reply to Win32 File tests, pathnames

You shouldn't need to quote \ in config files. It is only when Perl is parsing quoted strings in its source that the quoting is needed. Consider:

use strict; use warnings; print "Quoted \\ required here, its in a string\n"; print <DATA>; __DATA__ This \ doesn't need to be quoted.

Prints:

Quoted \ required here, its in a string This \ doesn't need to be quoted.

DWIM is Perl's answer to Gödel

Replies are listed 'Best First'.
Re^2: Win32 File tests, pathnames
by bowei_99 (Friar) on Apr 06, 2006 at 00:14 UTC
    I realize I don't have to escape a \ in a config file, but it gets messy converting it back and forth when writing it to and reading it from the config file. In other words,

    • if I read in the value C:\filename from a config file, I have to add another \ when using it as $filename = "C:\\filename", and
    • when writing the value "C:\\filename" back to the config file, I need to take out the extra \ again.
    This, to me, adds extra bulk to the application and makes it less maintainable and robust, e.g. easy to break due to typos.

    -- Burvil

      That simply doesn't make sense to me. Show us some code that demonstrates the problem. Tip: see I know what I mean. Why don't you? for ways to make your sample code self contained.


      DWIM is Perl's answer to Gödel
        Well, I put together some sample code, and OK, it reads a pathname with single slashes, and seems to run it ok, except for a 'Can't spawn "filename-here" No error" after executing the command.

        What I was getting at was that, since so many of the docs for Win32 modules have double slashes instead of single slashes, if I were to follow that convention, I'd have to convert back and forth between single and double slashes. An example, taken from from the Win32::AdminMisc FAQ:

        Win32::AdminMisc::ComputerAliasAdd( '\\\\Server1', 'fred' );
        and another example from the Win32::FileOp page:
        Substed 'A:' => ('','Floppy0') Substed 'B:' => undef Substed 'C:' => ('','Harddisk0\Partition1') Substed 'H:' => ('\\\\servername\homes\username','UNC') # set by subst H: \\servername\homes\username Substed 'S:' => ('\\\\servername\servis','LanmanRedirector') # set by net use S: \\servername\servis Substed 'X:' => () # not mapped to anything
        You will notice that these, and other cases, have four slashes, not two, at the beginning of a UNC path.

        So, basically, I'm worried that somewhere along the line, I'll get the two mixed up. A potential ramification here is that the config file could be written with four slashes and not two for a UNC path. Of course, there are other bugs that could pop up, too...

        -- Burvil

Re^2: Win32 File tests, pathnames
by salva (Canon) on Apr 06, 2006 at 09:23 UTC
    You shouldn't need to quote \ in config files

    well, it depends on the format of the configuration file. Some use the backslash as a way to introduce special sequences and characters (for instance Java property files).