2

如果我想启动一个 Perl Dancer 应用程序,我必须运行以下命令:

perl app.psgi

如果我想将一个选项传递给应用程序并从@ARGV 在脚本中访问它,我可以这样做:

perl app.psgi --option1 --option2

我也可以使用“plackup”来运行这个应用程序,但是我不能像使用 Perl 运行脚本时那样传递选项。@ARGV 参数数组为空。

我能做些什么?如何将命令行选项传递给从“plackup”开始的“app.psgi”脚本?

以下是该脚本的大致外观文件:

#!/usr/bin/env perl


use Dancer2;
use Data::Dumper;
use MIME::Base64 qw( encode_base64 );

use POSIX;

my $system = shift @ARGV || 'default_system';

print "SYSTEM: $system\n";

my $host = '127.0.0.1';
my $port = 5000;

set host => $host;
set port => $port;

get '/expenses' => sub {
    my %params = params;
    return to_json {status => 'OK'};
};

post '/expenses' => sub {
    my %params = params;
    return to_json {status => 'OK'};
};


dance;
4

1 回答 1

3

似乎正在被擦除的沙盒环境plackup运行该应用程序。@ARGV

您仍然可以尝试在命令行上使用环境变量而不是参数。例如,使用MY_SYSTEM示例:

#!/usr/bin/env perl
use Dancer2;
use Data::Dumper;
use MIME::Base64 qw( encode_base64 );
use POSIX;

print "SYSTEM: $ENV{MY_SYSTEM}\n";
# [...]

然后使用以下命令运行应用程序:

$ MY_SYSTEM=Foo plackup app.psgi
于 2020-07-13T09:30:35.513 回答