raz*_*z3r 7 parameters perl command-line cgi
我正在编写一个可以从命令行和网页运行的Perl脚本.该脚本接收几个参数,如果它从命令行开始,则通过$ ARGV读取这些参数,如果从网页开始,则从CGI读取这些参数.我怎样才能做到这一点?
my $username;
my $cgi = new CGI;
#IF CGI
$username = $cgi->param('username');
#IF COMMAND LINE
$username = $ARGV[0];
Run Code Online (Sandbox Code Playgroud)
使用CGI.pm,您可以在命令行上传递params而无需更改代码.引用文档:
如果从命令行或perl调试器运行脚本,则可以在命令行或标准输入中向脚本传递关键字或参数=值对的列表(您不必担心欺骗脚本)从环境变量中读取)
以你的榜样为例,这是一个问题:
perl script.cgi username=John
Run Code Online (Sandbox Code Playgroud)
Mojolicious框架使用经过战斗验证的环境自动检测,可在不同的服务器上运行(不仅仅是Apache).
所以你可以使用以下代码:
if (defined $ENV{PATH_INFO} || defined $ENV{GATEWAY_INTERFACE}) {
# Go with CGI.pm
} else {
# Go with Getopt::Long or whatever
}
Run Code Online (Sandbox Code Playgroud)