我知道我可以有条件地在Perl中使用一个模块,但是“pragmas”呢?我的测试显示,使用bigint可能比Perl中的正常数学慢得多,我只需要它来处理64位整数,所以我只想在Perl没有使用64位整数支持的时候使用它,我也是知道如何使用Config模块进行检查.
我尝试了各种各样的事情与eval和BEGIN块,但无法找出一种方式来有条件地使用bigint.我知道我可以使用Math :: BigInt,但是对于bigint和64位的情况,我不能使用单个的codepath.
解决方法
这实际上正常工作:
use Config; BEGIN { if (! $Config{use64bitint}) { require bigint; bigint->import; } }
不同编译时间之间的交互是复杂的(也许我会回来尝试稍后解释),但是足够的是,由于这里没有字符串eval,所以bigint所设置的标志会持续通过文件的其余部分或阻止你把BEGIN块放在里面.