Почему Perl $ OSNAME не работает на Solaris? - PullRequest
2 голосов
/ 01 октября 2010

Я помню, что использовал переменную $OSNAME в Linux.

В настоящее время я работаю над проектом в Solaris, где мне нужно получить имя ОС, а эта переменная не работает в Solaris.

Даже простая однострочная программа не работает:

print "OS is $OSNAME\n";

печатает

OS is 

Пожалуйста, помогите.

Ответы [ 4 ]

14 голосов
/ 01 октября 2010

Вам необходимо использовать модуль English.

$OSNAME на самом деле является псевдонимом для $^O, вы можете использовать $^O без использования English модуля, но для использования $OSNAME вам необходимо использовать English модуль.

Также, поскольку use strict отсутствует, вы не получили никаких ошибок.

Всегда используйте use strict; в вашей программе, это поможет вам обнаруживать ошибки такого рода.

Так что попробуйте:

use English;
use strict;

print "Operating system is $OSNAME\n";
2 голосов
/ 01 октября 2010

Если $OSNAME ($^O) не содержит именно ту информацию, которая вам нужна, взгляните на доступные вам значения из модуля Config .

2 голосов
/ 01 октября 2010

Тестируя вещи из командной строки, я получаю:

$ perl -E 'say $OSNAME'

$ perl -Mstrict -E 'say $OSNAME'
Global symbol "$OSNAME" requires explicit package name at -e line 1.
Execution of -e aborted due to compilation errors.
$ perl -Mstrict -MEnglish -E 'say $OSNAME'
linux
2 голосов
/ 01 октября 2010

Вы можете использовать print $^O вместо.

...