【发布时间】:2015-09-19 00:10:31
【问题描述】:
给定以下模块:
package My::Object;
use strict;
use warnings;
use My::Module::A;
use My::Module::B;
use My::Module::C;
use My::Module::D;
...
1;
我希望能够在接下来的 2 个场景中调用 My::Object:
-
正常使用
使用我的::对象;
My::Module->new();
-
减少内存使用。调用相同的对象,但使用条件或标志告诉对象跳过使用模块以减少内存使用。不知何故:
使用 My::Object -noUse;
My::Module->new();
如果尝试Perl if condition 没有成功。
我遇到的问题是使用很多用途的大对象,然后仅加载此对象会消耗大量 RAM。我知道我可以重构它们,但是如果我可以在确定在给定场景中没有使用它们的情况下以某种方式避免这些用途,那就太好了。
一种解决方案是当需要模块时,在所有地方都用 requires 替换 all uses,但是当其中一些在很多方法中使用时,我认为不方便。
有什么想法吗?
谢谢
【问题讨论】:
-
你能展示你从 2 开始的尝试吗?
-
@HunterMcMillen 这有点像 Sobrique 在他的回答中所建议的。但我无法让它工作。