Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 带Starman的plackup下的动态包装加载_Perl_Psgi_Starman - Fatal编程技术网

Perl 带Starman的plackup下的动态包装加载

Perl 带Starman的plackup下的动态包装加载,perl,psgi,starman,Perl,Psgi,Starman,我正在plackup和starman下运行一个web应用程序,并尝试根据用户请求动态加载和实例化包。我正在使用“require$packageName;”要加载$packageName包含包名称的包,名称存储在配置文件中。然后我在实例上执行一组已知的命令,因为所有类都从基类继承并包含一组已知的方法 这在Apache下可以正常工作,但出于某种原因,plackup说它无法定位包,即使@INC包含库路径,并且包名是lib路径中最后一个目录的绝对名称。也就是说,包名应该是Base::My::packag

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

这在Apache下可以正常工作,但出于某种原因,plackup说它无法定位包,即使@INC包含库路径,并且包名是lib路径中最后一个目录的绝对名称。也就是说,包名应该是Base::My::package

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


谢谢

require
仅接受模块名(例如Scalar::Util),当它们被指定为裸字时。如果给
require
一个字符串,那么它需要是模块的相对路径(例如Scalar/Util.pm)。您可以通过在
eval
中执行
require
eval
的字符串参数形式)来解决此问题,例如
eval“require$package”


参见示例:
starman-e'my$package=“Template”;需要$package;my$t=$package->new;返回[200,[“内容类型”=>“文本/普通”],[“确定”];'这或多或少是一个不起作用的例子。eval“使用$package”;是吗trick@MadHacker我的回答对你有帮助吗?