Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

Re^3: Failure of catfile on Windows 7

by furry_marmot (Pilgrim)
on Mar 01, 2011 at 22:14 UTC ( #890845=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Failure of catfile on Windows 7
in thread Failure of catfile on Windows 7

Well, you never know when you've got incomplete information (such as what version of File::Spec the OP is using). Based on the code he provided, I can't imagine why the code would change only the first part of the path to "\\". So I asked.

I'm looking at the code the OP ref'd. It's in a sub called _canon_cat that is referenced constantly throughout the module. It spends a lot of time trying to figure out if the path starts with a drive letter, a UNC, or just a root directory. Then lots of code trying to work out every variation of slashes and dots. But I don't think the problem is there.

Anyway, I've been playing with version 3.33, the current version, on Vista and I'm not seeing the OP's results. If he can live with not concatenating an empty string to the file, maybe that will take care of it.

--marmot


Comment on Re^3: Failure of catfile on Windows 7
Re^4: Failure of catfile on Windows 7
by ikegami (Pope) on Mar 01, 2011 at 22:55 UTC

    Well, you never know when you've got incomplete information

    There's no information missing. The source is on CPAN. Feel free to check it. You'll find the same thing.

    I can't imagine why the code would change only the first part of the path to "\\". So I asked

    Probably because you think something was changed. It's what you get when you place a path seperator between '' and '/foo/go/do'. That's fine on unix, but not on Windows.

    Anyway, I've been playing with version 3.33, the current version, on Vista and I'm not seeing the OP's results.

    What did you get, then?

    I think I used 3.31 — I'll confirm when I can — and I got the correct but undesired result (single slash). ( Confirmed )

      Well, you never know when you've got incomplete information

      There's no information missing. The source is on CPAN. Feel free to check it. You'll find the same thing.

      I meant information missing from the OP's post. Why would you think I meant information missing from the module? That makes no sense!

      I can't imagine why the code would change only the first part of the path to "\\". So I asked

      Probably because you think something was changed. It's what you get when you place a path seperator between '' and '/foo/go/do'. That's fine on unix, but not on Windows.

      No, I meant that given the text he fed it, "/foo/go/do", and assuming the module was doing what it was supposed to, I couldn't imagine why would it return "\\foo\go\do". The module actually does attempt to identify UNC pathnames (\\server\path\path), as well as drive letters (D:\Windows), and simple root folders (\users\me); so since the module is returning the text it is, it did not seem unreasonable to ask the OP if there is a server involved. It seems a bug like this surely would have been noticed before.

      It was only later, when I started studying the code, that I realized exactly what you just described -- that it may be trying to concatenate '' and an existing path. Version 3.33 has some reasonably intelligent checks for that and seems to work correctly. But the code is a little hairy to follow and I just don't have time to break it all down.

      Anyway, I've been playing with version 3.33, the current version, on Vista and I'm not seeing the OP's results.

      What did you get, then?

      I got the correct and expected results:
      canonpath: \foo\go\do catfile: \foo\go\do

        I meant information missing from the OP's post. Why would you think I meant information missing from the module? That makes no sense!

        I thought you were replying to the content of the parent post. I have no idea what information you think is missing, and for what purpose it's missing.

        assuming the module was doing what it was supposed to, I couldn't imagine why would it return "\\foo\go\do".

        So you can't even imagine them helping either, but you recommended trying them anyway? I suppose there's nothing lost by trying, thought I'm not sure how one goes about trying to get buggy results.

        I got I got the correct and expected [...] \foo\go\do

        That's what the OP is getting. It's not what he's expecting/desires.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://890845]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (8)
As of 2014-12-29 15:49 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (192 votes), past polls