2015-06-16 3 views
0

В оболочке у меня был файл .cshrc, который содержит некоторые определенные переменные, такие как имя пользователя.Perl: импортировать переменную оболочки

Мне нужно передать эти переменные на определенный скрипт Perl.

Например в терминале оболочки, я напечатал

>echo $user

Выход >esaad

Затем в Perl, чтобы прочитать $user переменную, я попытался:

system("echo $user")

Также попробовал эту команду:

my $userName = system(echo $ENV{user});

но Perl попросил $user инициализации переменной, как Perl не Shell один.

Как я могу прочитать эту переменную?

+0

Являются ли переменные переменными среды или переменными оболочки? Если они являются переменными оболочки, вы не сможете получить к ним доступ с Perl. –

ответ

4

Вы можете:

print $ENV{'user'} 

причина система вызова не работает в том, что система открывает новую оболочку, которая не источником .cshrc чтения this ответа для получения дополнительной информации

0

либо использовать Perl встроенный в системной переменной $ ENV:

print $ENV{'user'} 

Или используйте обратную косую черту, чтобы избежать переменной $ пользователя. Perl будет интерпретировать для переменной $ user, определенной внутри программы Perl, без обратной косой черты. С обратной косой чертой «echo $ user» передается как системный вызов.

system("echo \$user") 
+0

или, используйте одинарные кавычки: 'system ('echo $ user')' –

Смежные вопросы