Решено: Как интерпретировать строку в perl?

Модератор: Модераторы разделов

Аватара пользователя
amorphius
Сообщения: 353
ОС: Ubuntu

Решено: Как интерпретировать строку в perl?

Сообщение amorphius »

Вопрос возможно элементарный, но не смог его погуглить, так как не знал по каким ключевым словам.
Такая проблема: в базе данных лежит строка, в которой содержится текст и имена переменных. Нужно чтоб при выводе этой строки переменные заменялись их значениями. Я думал, что по умолчанию так и будет, но нет... Вот приблизительный код:

Код: Выделить всё

$a = 1;
$b = 2;
$res = $dbh->selectrow_array("select some_string from some_table where condition = some_value");
#после чего в переменной $res содержится значение "это переменная А = $a, а это переменная В = $b"
print "это переменная А = $a, а это переменная В = $b";
#выводит строку c интерпретацией
print $res;
#выводит строку без интерпретации

Объясните, пожалуйста, в чем разница и как надо, чтоб работало?
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Решено: Как интерпретировать строку в perl?

Сообщение NickLion »

Разница в том, что в первом случае не совсем строка. Обычные строки в perl - с одинарными кавычками. Надо использовать eval в таких случаях. Но будьте осторожны, в строки можно встроить много чего. Поэтому подумайте насчет sprintf.

UPD

Вот примерчик, который только переменные заменяет, встроенные выражения - нет.

Код: Выделить всё

#!/usr/bin/perl

my $a = 3;
my $b = 4;

my $s1 = "a=$a;b=$b";
my $s2 = 'a=$a;b=$b';

print $s1."\n";
print $s2."\n";
$s2 =~ s/(\$[A-Za-z_]\w*)/eval($1)/ge;
print $s2."\n";
Спасибо сказали:
Аватара пользователя
amorphius
Сообщения: 353
ОС: Ubuntu

Re: Решено: Как интерпретировать строку в perl?

Сообщение amorphius »

не, что то не работает
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Решено: Как интерпретировать строку в perl?

Сообщение NickLion »

Что-то не работает - это не ответ. Давайте код, или хотя бы текст ошибки, если такая есть.
Спасибо сказали:
Аватара пользователя
amorphius
Сообщения: 353
ОС: Ubuntu

Re: Решено: Как интерпретировать строку в perl?

Сообщение amorphius »

все, уже неважно. мне в принципе не нужны никакие проверки на эту строку, поэтому достаточно одного eval();
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Решено: Как интерпретировать строку в perl?

Сообщение NickLion »

Т.е. заработало?
Спасибо сказали: