如何动态执行给变量的内容

时间:2012-10-19 09:56:59

标签: java c perl

我有一个程序将一组语句转换为变量, 以及如何将该代码块(作为字符串赋予变量)动态地放入当前正在执行的编译和执行代码中。 我急切地等待这个解决方案。 任何具有此功能的编程语言.. 如果是,请粘贴此问题的代码

3 个答案:

答案 0 :(得分:3)

Perl使这很简单。

Perl:

eval q{ print "Hello world!\n" };

$code = ' print "Hello world!\n"; ';
eval $code;

请参阅eval

注意,在从中获取代码时应该小心。您向所有提供输入的人展示了语言的全部功能。确保它来自安全的来源。 “字符串评估”,因为它被称为支持它的任何语言中的高风险行为。例如,接受来自Web用户的输入并将其作为服务器上的代码运行,只是要求灾难。

关于C:C是一种编译语言,编译器在运行时不可用。另一方面,没有什么可以阻止您在C程序中嵌入Perl解释器,这将为您提供从编译的C应用程序中运行时编译和执行Perl代码。为了记录,C ++在同一条船上。它是一种编译语言,编译器不是运行时环境的组件。

至于Java,有这篇文章:The Java 6.0 Compiler API

答案 1 :(得分:0)

既然你说过“任何语言”,我会忽略你的标签。

在Python中它是微不足道的:

code = "print \"hello world\""
exec code

这将打印“你好世界”。

C没有这样的功能,因为编译器在运行时不存在。

答案 2 :(得分:0)