Bash perl cgi 脚本的配置文件
Bash config file for perl cgi script
我想使用 bash 文件作为我的项目配置文件,这样同一个配置文件可以用于所有脚本,而不管语言(尤其是 bash 和 perl) .
命令行没问题
$ source configfile.sh
$ ./perlscript.pl
但在 cgi 脚本中答案不是很清楚。
一种方法是使用 bash cgi 文件来执行 perl 脚本。
#!/usr/bin/env bash
# mycgiscript.cgi
source /path/to/configfile.sh
perl /path/to/perlscript.pl
# i think the print functions in perlscript just output to the browser?
但如果我这样做,那么 bash 将处理所有 http 参数解析,并且任何 perl 的 cgi 功能和模块都将变得无用,除非我弄错了。由于 perl 无论如何都会做所有的腿部工作,似乎使用 cgi 进行参数传递应该很自然,但让 bash 管理 http 请求可能没有真正的问题?
另一种方法是使用Perl CGI文件解析配置文件,并根据解析设置环境变量。 configfile.sh
中的变量相互引用,导致复杂的解析和头痛。
那么,在 cgi 脚本中使用 bash
配置文件来设置输出生成 Perl 代码所使用的项目特定 config/environment 变量的最佳做法是什么?
其中大部分内容有点老套,但我喜欢保持配置集中的想法,所以让我们看看它是如何进行的。
如果您正在编写 CGI 脚本,则需要 Web 服务器。让我们假设这个答案是 apache。
有几种选择:
重新配置 apache
因此您可以将您的配置脚本添加到 apache 的启动脚本中。这将在启动 apache 之前设置您的环境变量,这些变量应该由子进程继承,包括您的 CGI 脚本。
解析配置文件
如果您没有对配置文件中的 shell 做任何特殊的事情,那么在 Perl 中解析它应该是非常简单的。 Shell::Parser 是一个预先存在的模块,似乎非常彻底地处理了这个问题。
处理配置文件
如果您在配置文件中使用有趣的 shell 技巧,让 shell 运行 它可能更容易,然后查看环境中还剩下什么。你的 CGI 可以 运行 一个像这样的脚本:
source config.sh # read config
env # print out environment
然后在 Perl 中解析 env
的输出。
真正的配置库
如果您对更大的重写感兴趣,我建议您选择 App::Config。它不会让您将配置保存在 shell 文件中,但您可以编写一个 Perl 脚本,从 App::Config
配置中生成您的 shell 配置。
我想使用 bash 文件作为我的项目配置文件,这样同一个配置文件可以用于所有脚本,而不管语言(尤其是 bash 和 perl) .
命令行没问题
$ source configfile.sh
$ ./perlscript.pl
但在 cgi 脚本中答案不是很清楚。
一种方法是使用 bash cgi 文件来执行 perl 脚本。
#!/usr/bin/env bash
# mycgiscript.cgi
source /path/to/configfile.sh
perl /path/to/perlscript.pl
# i think the print functions in perlscript just output to the browser?
但如果我这样做,那么 bash 将处理所有 http 参数解析,并且任何 perl 的 cgi 功能和模块都将变得无用,除非我弄错了。由于 perl 无论如何都会做所有的腿部工作,似乎使用 cgi 进行参数传递应该很自然,但让 bash 管理 http 请求可能没有真正的问题?
另一种方法是使用Perl CGI文件解析配置文件,并根据解析设置环境变量。 configfile.sh
中的变量相互引用,导致复杂的解析和头痛。
那么,在 cgi 脚本中使用 bash
配置文件来设置输出生成 Perl 代码所使用的项目特定 config/environment 变量的最佳做法是什么?
其中大部分内容有点老套,但我喜欢保持配置集中的想法,所以让我们看看它是如何进行的。
如果您正在编写 CGI 脚本,则需要 Web 服务器。让我们假设这个答案是 apache。
有几种选择:
重新配置 apache
因此您可以将您的配置脚本添加到 apache 的启动脚本中。这将在启动 apache 之前设置您的环境变量,这些变量应该由子进程继承,包括您的 CGI 脚本。
解析配置文件
如果您没有对配置文件中的 shell 做任何特殊的事情,那么在 Perl 中解析它应该是非常简单的。 Shell::Parser 是一个预先存在的模块,似乎非常彻底地处理了这个问题。
处理配置文件
如果您在配置文件中使用有趣的 shell 技巧,让 shell 运行 它可能更容易,然后查看环境中还剩下什么。你的 CGI 可以 运行 一个像这样的脚本:
source config.sh # read config
env # print out environment
然后在 Perl 中解析 env
的输出。
真正的配置库
如果您对更大的重写感兴趣,我建议您选择 App::Config。它不会让您将配置保存在 shell 文件中,但您可以编写一个 Perl 脚本,从 App::Config
配置中生成您的 shell 配置。