Как я могу узнать, работает ли мой Perl-скрипт под Windows? - PullRequest
9 голосов
/ 15 сентября 2009

Каков лучший способ программно определить, выполняется ли скрипт Perl в системе на базе Windows (Win9x, WinXP, Vista, Win7 и т.

Заполните пробелы здесь:

my $running_under_windows = ... ? 1 : 0;

Ответы [ 4 ]

15 голосов
/ 15 сентября 2009

С perldoc perlvar:

  • $OSNAME
  • $^O

Имя операционной системы, в которой была создана эта копия Perl, как определено в процессе настройки. Значение идентично $Config{'osname'}. См. Также Config и ключ командной строки -V, задокументированные в perlrun.

На платформах Windows $^O не очень полезен: поскольку он всегда MSWin32, он не показывает разницы между 95/98 / ME / NT / 2000 / XP / CE / .NET. Используйте Win32::GetOSName() или Win32::GetOSVersion() (см. Win32 и perlport ), чтобы различать варианты.

6 голосов
/ 15 сентября 2009
$^O eq 'MSWin32'

(Источник: справочная страница perlvar)

3 голосов
/ 15 сентября 2009

Использование Devel :: CheckOS . Он обрабатывает всю логику и особые случаи для вас. Я обычно делаю что-то вроде:

use Devel::CheckOS qw(die_unsupported os_is);

die "You need Windows to run this program!" unless os_is('MicrosoftWindows');

Семейства «MicrosoftWindows» знают о таких вещах, как Cygwin, поэтому, если вы работаете в Windows, но не в командной строке, os_is() все равно даст вам правильный ответ.

0 голосов
/ 02 ноября 2016

Это очень быстро и грязно, и не думаю, что это 100% портативно, но все же полезно в крайнем случае. Проверьте наличие обратной косой черты в переменной PATH Env, поскольку PATH является общей для Windows и Unix. Итак - в Perl:

if ( $ENV{PATH}=~m{\\} ) {
  #Quick and dirty: It's windows!
  print "It's Windows!";
} else {
  print "It's Unix!";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...