in reply to Re^2: CPAN Module for mixing Unix/Windows path
in thread CPAN Module for mixing Unix/Windows path

Your test is invalid. File::Spec will never produce 'bar\baz'* on your system. Reread the OP.

Update: I thought it went without saying given the context, but:
* — where '\' is a path separator.

  • Comment on Re^3: CPAN Module for mixing Unix/Windows path

Replies are listed 'Best First'.
Re^4: CPAN Module for mixing Unix/Windows path
by mandarin (Hermit) on Jun 05, 2008 at 14:39 UTC
    I surely must be missing something here. In what way my test is invalid? I just was curious what catdir would do, so I downloaded your code, stripped the lean_forward sub and added a print statement.
    And was surprised by the output, as it contained a backslash.
    File::Spec will never produce 'bar\baz' on your system
    Well, it does. Double-checked it.
    'bar\baz' would make a valid unix filename, so maybe File::Spec does not render the '\' as a path seperator?

      Either '\' is a path separator or it's not. You can't have it both ways.

      If '\' is not a path separator, then it cannot be replaced with '/' and your test did return consistent and expected results, contrary to what you said.

      If '\' is a path separator, then it couldn't have been produced by File::Spec on your system and your test is invalid since the OP said that path is produced by File::Spec.

      The only system where it's safe or valid to change 'bar\baz' to 'bar/baz' is a Win32 system.