如果我想启动 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;
最佳答案
看起来像plackup
正在运行应用程序 in a sandbox environment其中 @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
关于perl - 如何在 plackup 执行的 Perl Dancer 应用程序中传递命令行选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62870530/