【发布时间】:2012-01-11 01:43:43
【问题描述】:
我正在使用 starman 在 plackup 下运行 Web 应用程序,并尝试根据用户请求动态加载和实例化包。我正在使用“需要 $packageName;”要加载包,其中 $packageName 包含包的名称,名称存储在配置文件中。然后我在实例上执行一组已知的命令,因为所有类都继承自基类并包含一组已知方法。
这在 Apache 下可以正常工作,但由于某种原因,即使 @INC 包含库路径并且包名称是库路径中最后一个目录的绝对名称,它也无法找到包。也就是说,包名是 Base::My::Package。
有人遇到过这个问题吗?我是否需要更新 Starman 中的其他路径?我正在使用 -I 标志执行 plackup 并更新我的环境 PERL5LIB 变量。我还在主应用程序类中尝试了'use lib /...',但这些都不起作用。
谢谢
【问题讨论】:
-
示例:
starman -e'my $package = "Template"; require $package; my $t = $package->new; return [200, ["Content-Type" => "text/plain"], ["ok"]];' -
这或多或少是一个不起作用的例子。
-
eval "使用 $package";成功了
-
@MadHacker:我的回答对你有帮助吗?