我必须处理使用
的安全代码eval('use someModule');
在函数中,并在运行时评估模块。
不幸的是,带有此eval块的函数被多次调用。 现在的问题-每次调用带有此块的功能时Perl是否会评估模块? -还是Perl足够聪明,可以跳过第二轮评估? 并有一种方法可以确定这一点吗?
我已经在模块的BEGIN块中尝试了一些全局变量计数,但是我不确定这是否是足够的测试。
答案 0 :(得分:3)
use someModule
等效于:
BEGIN { require someModule; someModule->import(); }
和require
要求包含一个库文件(如果尚未包含的话)。
因此someModule将仅被读取和编译一次,但是其import
子(如果有的话)将为每个use
被调用一次。