#perl #environment-variables
#perl #переменные среды
Вопрос:
Как интерполировать переменную среды перед присвоением другой переменной. Например, я читаю строку из входного файла, в котором есть переменные среды. Итак, я хочу присвоить значение переменной. Я не вижу значения переменной . Мой код выглядит следующим образом.
open (FH , "<", "$ARGV[0]")
while ($line = <FH>)
$line2 = $line
}
print $line; ## prints $abc/ver
print $line2; ## prints $abc/ver
value of abc environment is username ; So I am expecting to have $line2 value as below
print $line2 ; ## Should print username/ver
Комментарии:
1. Это очень хорошо задокументировано в онлайн-руководстве. Вы смотрели на
%ENV
?2. Не используйте глобальные переменные (
FH
); используйте лексические переменные (my $FH
).3. Всегда используйте
use strict; use warnings qw( all );
Ответ №1:
Следующее является минимальным решением:
$line2 =~ s/$(w )/$ENV{$1}/g;
Конечно, вы можете захотеть обрабатывать переменные, которые не определены более четко, и вам может понадобиться какой-то механизм экранирования, чтобы предотвратить особое значение $
.
Комментарии:
1. @SwathiVutukuri: Если это работает, то, пожалуйста, примите ответ.