2010-03-26 1 views
-1

Возможно ли сохранить некоторый код Perl в базе данных, а затем извлечь его с помощью оператора select и выполнить этот код Perl? Я пробовал использовать eval, но это не работает.Может ли моя программа Perl выполнять код, хранящийся в базе данных?

Вот что я хочу прямо сейчас, и это не похоже на работу:

my $temp = $qryResults[0]; 
print $temp."\n"; 
eval{"$temp"}; 

выход $con->Disconnect();exit;

+8

@TheGNUGuy Пожалуйста, объясните, почему вы хотите это сделать. Сам пример показывает одну проблему безопасности. Есть много других. Если вы объясните * почему * и * что *, возможно, мы можем предложить более безопасную альтернативу. –

+1

Пожалуйста, не делайте этого. Скажите нам, почему вы думаете, что вам нужно это сделать, и, возможно, мы сможем привести вас к лучшему пути. :) –

+0

Я пытаюсь сделать бот-джаббер, который я могу использовать для управления одной из моих удаленных машин. Я хочу использовать базу данных для хранения команд и действий, которые может выполнять бот. – cskwrd

ответ

6

Вам просто нужно:

eval $temp; 

Причина ваша версия не работает из-за блок форму Eval его оценки, как если бы вы написали простую строка:

eval{"perl code here"} 

является как писать эту строку perl:

"perl code here" 

Это не код, его строка. Форма блока определяет, что внутри блока. Если строка внутри блока, это просто строка, а не сценарий. Строка формы показывает, что внутри строки.

+3

Да. Несмотря на то, что оба они называются 'eval',' eval {BLOCK} и 'eval" STRING "' ** не ** взаимозаменяемы. –

+2

Многие плачущие сеансы программирования начинались с «эй, если я просто использую eval ...». Мой совет: НЕ. – Ether

1

я понял это; если я удалю фигурные скобки, то это сработает.

+1

Удачи, вам это понадобится. – Ether