Если я запускаю этот скрипт:УХО и gwtcwd возвращает путь стиля Линукс на окнах
use Cwd;
print "$^O\n";
print cwd;
Выход есть:
C:\tmp>perl tmp.pl
msys
/c/tmp
Как я могу получить путь C:\tmp
окна стиль?
Если я запускаю этот скрипт:УХО и gwtcwd возвращает путь стиля Линукс на окнах
use Cwd;
print "$^O\n";
print cwd;
Выход есть:
C:\tmp>perl tmp.pl
msys
/c/tmp
Как я могу получить путь C:\tmp
окна стиль?
Это потому, что вы используете встроенный 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
Вы на самом деле не на Windows, или $^O
будет MSWin32
. Вы находитесь в среде эмуляции UNIX unix, поэтому неудивительно, что у вас есть пути в стиле unix. Для версии Perl, которая работает на Windows изначально, используйте ActivePerl или Strawberry Perl.
Возможный дубликат [Использование 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
@devnull: Не совсем дубликат, IMO, даже если ответ задан на другой вопрос (т.е. 'Win32 :: GetLongPathName() ') может действительно помочь здесь. (OTOH, этот _could_ считается дубликатом [этого вопроса] (http://stackoverflow.com/questions/922221/perl-getcwd-ending-forward-slashes).) –