2010-03-26 3 views
-1

데이터베이스에 일부 Perl 코드를 저장 한 다음 select 문을 사용하여 검색 한 다음 해당 Perl 코드를 실행할 수 있습니까? eval을 사용해 보았지만 작동하지 않는 것 같습니다. 내가 지금 시도하고 작동하지 않는 것을 여기 Perl 프로그램이 데이터베이스에 저장된 코드를 실행할 수 있습니까?

은 다음과 같습니다

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

출력 내가 그것을 알아 냈 $con->Disconnect();exit;

+8

@ TheGNUGuy 이유를 설명하십시오. 당신의 예제 자체가 하나의 보안 문제를 보여줍니다. 많은 다른 많은 사람들이 있습니다. * why *와 * what *에 대해 설명하면 어쩌면 더 안전한 대안을 제시 할 수 있습니다. –

+1

하지 마십시오. 왜 이렇게해야한다고 생각하는지 말해 주시고 더 나은 길을 인도 해 줄 수 있는지 알려주십시오. :) –

+0

원격 컴퓨터 중 하나를 제어하는 ​​데 사용할 수있는 jabber 봇을 만들려고합니다. 나는 데이터베이스를 사용하여 봇이 수행 할 수있는 명령과 작업을 저장하려고합니다. – cskwrd

답변

6

당신은 필요

eval $temp; 

당신이 쓴 것처럼 버전이 작동하지 않은 이유는 간단한 문자열을 평가하는 평가의 블록 형태로 인해 :

eval{"perl code here"} 

입니다 펄이 라인 작성과 같은 :

"perl code here" 

을이 코드의 문자열이 아니다. 블록 형식은 블록 내부의 내용을 나타냅니다. 문자열이 블록 안에 있다면, 문자열이 아니라 스크립트입니다. 문자열 형식은 문자열 안에있는 내용을 나타냅니다.

+3

예. 둘 다 'eval'이라고 불리워도 'eval {BLOCK}'및 'eval'STRING "은 ** 교환 할 수 없습니다 **. –

+2

많은 눈물을 흘리는 프로그래밍 세션은 "이봐, 내가 방금 eval을 사용한다면 ..."으로 시작되었다. 내 조언 :하지 마. – Ether

1

이다; 중괄호를 제거하면 작동합니다.

+1

행운을 빈다, 너는 그것을 필요로 할 것이다. – Ether

관련 문제