2013-11-04 58 views
0

我试图用Perl/Plack替换环境变量'Ben'。如果设置了环境变量(例如“Dave”),则它将打印出“Powered by Dave”。但如果没有设置,它将默认为'Ben'。如何在Perl/Plack中打印环境变量

目前,使用plackup -r

#!/usr/bin/env plackup 

my $app = sub { 
     my $env = shift; 

     return [ 
      200, 
      ['Content-Type', 'text/plain'], 
      ['Powered by Ben'], 
     ]; 

}; 

目前在下面的程序工作,我cpanfile包含以下

requires 'Plack' => '1.0028'; 
requires 'CGI::Emulate::PSGI' => '0.15'; 
requires 'CGI::Compile' => '0.16'; 
+0

我的Perl是有点生疏了,所以请这样的:Perl的声明'如果($ FOO) {x} else {y}',如果$ foo不存在,这是如何表现的?我的猜测是,一个现存的$ foo将执行第一个块,而一个不存在的$ foo将执行第二个块。 –

+1

类似于'[sprintf('Powered by%s',$ ENV {xxx} ||'Ben')]''作为单引号的字符串不插值 – KeepCalmAndCarryOn

回答

1

通过Environment Varaible你的意思是,操作系统的环境或普拉克要求环境和因此一个HTTP请求参数? (他们完全不同)。

如果是前者,可以通过%ENV散列来访问它。

如果是后者,则应阅读Plack::Request的文档。

(注:我从来没有用过普拉克,我只用文档去)

+2

如果是后者,它应该只在'$ env' - 已经在代码中:) – miyagawa