Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

jozef (8299)

jozef
  (email not shown publicly)
http://jozef.kutej.net/
Jabber: jozef@kutej.net

Journal of jozef (8299)

Saturday June 19, 2010
09:29 AM

UNIX / in Strawberry %INC

[ #40406 ]

That was a surprise for me to see / in MSWin32 paths. Dump of %INC:

$VAR1 = {
         'bytes.pm' => 'C:/strawberry/perl/lib/bytes.pm',
         'XSLoader.pm' => 'C:/strawberry/perl/lib/XSLoader.pm',
         'Carp.pm' => 'C:/strawberry/perl/lib/Carp.pm',
         'warnings/register.pm' => 'C:/strawberry/perl/lib/warnings/register.pm',
         'File/Spec/Unix.pm' => 'C:/strawberry/perl/lib/File/Spec/Unix.pm',
         'Exporter.pm' => 'C:/strawberry/perl/lib/Exporter.pm',
         'vars.pm' => 'C:/strawberry/perl/lib/vars.pm',
         'strict.pm' => 'C:/strawberry/perl/lib/strict.pm',
         'warnings.pm' => 'C:/strawberry/perl/lib/warnings.pm',
         'File/Spec.pm' => 'C:/strawberry/perl/lib/File/Spec.pm',
         'overload.pm' => 'C:/strawberry/perl/lib/overload.pm',
         'base.pm' => 'C:/strawberry/perl/lib/base.pm',
         'File/Spec/Win32.pm' => 'C:/strawberry/perl/lib/File/Spec/Win32.pm',
         'Data/Dumper.pm' => 'C:/strawberry/perl/lib/Data/Dumper.pm',
         'App/whichpm.pm' => 'lib/App/whichpm.pm'
       };

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • There is

    perl -Mstrict -e "print $INC{'strict.pm'}"
    C:/strawberry/perl/lib/strict.pm

    but

    perl -e "($f)=split/;/,$ENV{PATH};print $f"
    C:\Windows\system32

  • The values in %INC always follow Unix conventions, regardless of which platform you’re on.

    (I cannot find this documented anywhere in the POD that ships with perl.)

    • Actually it’s only the key that’s always in Unix convention. The value will be some ill-descript Unixish mishmash on non-Unix platforms: usually, the @INC entry under which the file was found, verbatim, plus the same string as the key, joined with a slash regardless of OS – but not always, especially on VMS – and never on Symbian.

      Uhm, I hope this helps.

    • I only found a reference to it in perlfaq5 [perl.org]. It points out there that DOS does handle forward slashes in place of backslashes (though you have to put quotes around the file name, or it thinks the slash is an option).

      C:\Users\slanning>more > foo.txt
      hi there
      ^C

      C:\Users\slanning>perl -e "open(F, 'c:/Users/slanning/foo.txt') || die$!; while(<F>){print}"
      hi there

      C:\Users\slanning>perl -e "open(F, 'c:\Users\slanning\foo.txt') || die $!; while(<F>){print}"
      hi there