Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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 山;主持人;在Plack::Builder中_Perl_Plack_Psgi - Fatal编程技术网

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;
}