интерполяция переменных env в perl

#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: Если это работает, то, пожалуйста, примите ответ.