我想创建一个相对复杂的Web应用程序。为此,我发现使用提供的Dancer2(特定于域的语言)的DSL编程方式非常方便。我也发现提供的图书馆非常好。
根据文档,如果您想在多个库中拆分主脚本,可以使用:
use Dancer2 appname => 'MyApp';
其他库的开头。这非常有用,但我想更进一步,定义一个主库使用的库,以模块化方式添加更多功能。我试过了:
package MyLibrary;
use Dancer2 appname => 'MyApp';
然后,为了导出变量和函数:
require Exporter;
our (@ISA, @EXPORT, @EXPORT_OK);
@ISA = qw(Exporter);
@EXPORT = qw( func1 func2 );
@EXPORT_OK = qw( func3 );
但我发现这些定义不会导出。我仍然可以通过 long 方式MyLibrary::func1
访问主脚本中的任何功能,但不能使用func1
。只要我添加use Dancer2 appname => 'MyApp';
,就会发生这种情况。但如果我不这样做,我就无法从库内部访问任何特定于应用程序的数据。假设我想检查config->{myoption}
等配置选项。
那么,我是否想尝试以不同的方式完成某些事情?有没有解决的办法?我使用的是Dancer2版本0.205002。