Perl: как заменить переменную по ее значению
Предположим, что если в таблице есть столбец с именем test, а внутри test я написал строку "Dear $name, Hello", где $ name - это переменная. Мне нужно выбрать этот ряд, для которого я делаю
my $test = $dbh->prepare( "select test from testing")
В сценарии я назначил $ name = "Джо". Теперь мне нужно заменить переменную $ name на имя переменной, назначенное в скрипте (т. Е. Joe). Я попытался напечатать $ test. На нем напечатано "Уважаемый $ name, Hello". Как мне это сделать.
2 ответа
Решение
Вы можете попробовать что-то вроде этого:
use strict;
my $name = "Joe";
my $test = 'Dear $name, Hello';
$test =~ s/\$name/$name/ ;
print $test;
Выход:
Dear Joe, Hello
Я предлагаю вам использовать String::Interpolate
модуль, который применяет собственную систему интерполяции Perl к значениям, которые вы передаете параметром. Вероятно, его нужно будет установить из CPAN, поскольку он не является основным модулем.
use strict;
use warnings;
use String::Interpolate 'interpolate';
my $name = "Joe";
my $text = 'Dear $name, Hello';
print interpolate($text);
выход
Dear Joe, Hello