我了解 BEGIN 在主程序之前执行。问题是:
- 谈论 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;
}
将按什么顺序执行多个 BEGIN 块中定义的内容My::CgiApp1
和 my app.pgsi
?
从上述 PSGI 应用程序的角度来看,使用的主要区别是什么:
BEGIN {
$cfg = YAML::LoadFile("my.config");
}
或者一个简单的
$cfg = YAML::LoadFile("my.config");