Ваша главная проблема здесь заключается в том, что вам нужно использовать export
для того, чтобы ваши переменные были видны в ваших подпроцессах (например, perl
процесс).
export varone="noob"
export vartwo="trivial"
echo "my {varone} and {vartwo} question" | perl -pe '...'
Вам также необходимо знатьчто переменные оболочки доступны внутри Perl-программы с использованием хеша %ENV
.
Таким образом, ваш код может быть упрощен до:
export varone="noob"
export vartwo="trivial"
echo "my {varone} and {vartwo} question" | perl -pe 's|\{(\w+)}|$ENV{$1}|g'
Вы можете рассмотреть возможность добавления опции для проверки неизвестных переменных.
export varone="noob"
export vartwo="trivial"
echo "my {varone} and {vartwo} question {varxxx}" | perl -pe 's|\{(\w+)}|$ENV{$1}//"UNKNOWN"|g'
Но я бы порекомендовал для этого правильный шаблонизатор .