Starman在挡板下动态装载包裹



我正在使用starman在plackup下运行一个web应用程序,并尝试根据用户请求动态加载和实例化包。我正在使用"require$packageName;"要加载$packageName包含包名称的包,这些名称存储在配置文件中。然后,我在实例上执行一组已知的命令,因为所有类都继承自基类并包含一组已知方法。

这在Apache下运行良好,但出于某种原因,plackup表示,即使@INC包含库路径,并且包名称是lib路径中最后一个目录的绝对名称,它也无法定位包。也就是说,包名称将是Base::My::package。

有人经历过这个问题吗?我需要更新Starman中的其他路径吗?我正在使用-I标志执行插件,并更新我的环境PERL5LIB变量。我还在主应用程序类中尝试了'use lib /...',但这些都不起作用。

感谢

require将只接受指定为裸字的模块名称(例如Scalar::Util)。如果你给require一个字符串,那么它需要是模块的相对路径(例如Scalar/Util.pm)。你可以通过在evaleval的字符串参数形式)(例如eval "require $package")中执行require来绕过这一点。

请参阅检查机器中安装的模块列表

相关内容

  • 没有找到相关文章