簡體   English   中英

如何在由 plackup 執行的 Perl Dancer App 中傳遞命令行選項

[英]How to pass a command line option in Perl Dancer App executed by plackup

如果我想啟動 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正在刪除@ARGV 的沙盒環境中運行應用程序。

您仍然可以嘗試在命令行上使用環境變量而不是 arguments。 例如,以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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM