Perl 山;主持人;在Plack::Builder中
和的概要还说: 我尝试了以下方法:Perl 山;主持人;在Plack::Builder中,perl,plack,psgi,Perl,Plack,Psgi,和的概要还说: 我尝试了以下方法: use Plack::Builder; my $app1 = sub { return [200, ['Content-Type' => 'text/plain'], [ "Hello 1"] ]; }; my $app2 = sub { return [200, ['Content-Type' => 'text/plain'], [ "Hello 2"] ]; }; my $app3 = sub { return [200, ['Content-
use Plack::Builder;
my $app1 = sub { return [200, ['Content-Type' => 'text/plain'], [ "Hello 1"] ]; };
my $app2 = sub { return [200, ['Content-Type' => 'text/plain'], [ "Hello 2"] ]; };
my $app3 = sub { return [200, ['Content-Type' => 'text/plain'], [ "Hello 3"] ]; };
builder {
mount "/a1" => builder { $app1 };
mount "http://myhost.com" => builder{ $app2 };
mount "/" => builder{ $app3 };
}
但是当尝试使用plackup
get运行它时:
加载/tmp/app.psgi时出错:路径需要以/at开头
/home/cw/.anyenv/envs/plenv/versions/5.20.3/lib/perl5/site\u perl/5.20.3/Plack/Builder.pm
第108行
怎么了?我在文档中没有明确提到这一点,但除了主机名之外,还必须包含路径组件,例如
http://myhost.com/foo
。改变
mount "http://myhost.com" => builder{ $app2 };
到
(即主机myhost.com
上的/
)
相关代码位于(mount
仅调用Plack::App::URLMap的map
方法):
天啊。这真是个愚蠢的错误;(如果有明确的文档记录就好了。谢谢!错误消息令人困惑-它谈到了开始。;)我不知道这本身是否是一个bug,尽管文档可能更清晰。您应该同时提供主机名和位置<代码>http://myhost.com/对应于
myhost.com
上的/
<代码>http://myhost.com没有指定位置,只是一个主机名。我的代码中的平均错误:)-is的逻辑是在末尾有一个/
。只是医生应该更干净。Thanx.:)那么,请毫不犹豫地打开拉取请求或问题,以减少错误的混淆:)
mount "http://myhost.com" => builder{ $app2 };
mount "http://myhost.com/" => builder{ $app2 };
if ($location =~ m!^https?://(.*?)(/.*)!) {
$host = $1;
$location = $2;
}