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
Другие вопросы по тегам