cwd и gwtcwd возвращают путь в стиле Linux в Windows

Если я запускаю этот скрипт:

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

Выход:

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

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

2 ответа

Решение

Это потому, что вы используете встроенный 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

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

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

Затем:

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

Вы на самом деле не на Windows, или $^O было бы MSWin32, Вы находитесь в среде эмуляции Unix MSYS, поэтому неудивительно, что у вас есть пути в стиле Unix. Для версии Perl, которая изначально работает в Windows, используйте ActivePerl или http://strawberryperl.com/.

Другие вопросы по тегам