2013-09-17 4 views
1

Если я запускаю этот скрипт:УХО и gwtcwd возвращает путь стиля Линукс на окнах

use Cwd; 
print "$^O\n"; 
print cwd; 

Выход есть:

C:\tmp>perl tmp.pl 
msys 
/c/tmp 

Как я могу получить путь C:\tmp окна стиль?

+0

Возможный дубликат [Использование Perl в Windows, как я могу гарантировать, что я получаю путь в правильном случае после chdir?] (Http://stackoverflow.com/questions/7995113/using-perl-on-windows- how-can-i-обеспечить-i-get-the-path-in-the-correct-case-follo) – devnull

+0

@devnull: Не совсем дубликат, IMO, даже если ответ задан на другой вопрос (т.е. 'Win32 :: GetLongPathName() ') может действительно помочь здесь. (OTOH, этот _could_ считается дубликатом [этого вопроса] (http://stackoverflow.com/questions/922221/perl-getcwd-ending-forward-slashes).) –

ответ

4

Это потому, что вы используете встроенный perl из msys, и эта версия perl определенно даст путь в стиле Linux. Если вы установили Active Perl и использовать Active Perl для запуска сценария, путь будет Win32-стиль:

$ /bin/perl5_8.exe path.pl 
msys 
/c/tmp 

$ /c/ActivePerl/bin/perl.exe path.pl 
MSWin32 
c:/tmp 

Вы можете использовать псевдоним в профиле Баш для перенаправления perl в ActivePerl:

alias perl /c/ActivePerl/bin/perl.exe 

Тогда:

$ which perl 
perl is /c/ActivePerl/bin/perl 
2

Вы на самом деле не на Windows, или $^O будет MSWin32. Вы находитесь в среде эмуляции UNIX unix, поэтому неудивительно, что у вас есть пути в стиле unix. Для версии Perl, которая работает на Windows изначально, используйте ActivePerl или Strawberry Perl.