我知道BEGIN在主程序之前执行。这些问题是:Perl的BEGIN块在app.psgi
- 谈论一个PGSI应用程序时,什么是主程序 - 或更好
- 时,将执行在PGSI应用BEGIN块?
- 这是不同的
plackup
或Starman
和? - 中间件怎么样 - 何时有多个 BEGIN块?
例app.psgi
:
use Modern::Perl;
use YAML;
use Plack::Builder;
use CGI::Emulate::PSGI;
our($cfg);
BEGIN {
$cfg = YAML::LoadFile("my.config");
}
#old really __BIG__ cgi application - what uses many BEGIN blocks too...
my $app1 = CGI::Emulate::PSGI->handler(sub {
use My::CgiApp1;
My::CgiApp1::executer->run();
});
my $app2 = sub { ... };
builder {
mount "/path1" => $app1;
mount "/" => $app2;
}
在什么顺序将被执行多开始My::CgiApp1
和我app.pgsi
定义了什么块?
从鉴于上述PSGI应用程序的一点是什么使用的主要区别:
BEGIN {
$cfg = YAML::LoadFile("my.config");
}
或简单
$cfg = YAML::LoadFile("my.config");