有哪些 Perl 模块不能用于 CGI?

3

最近我遇到一个问题,在Perl程序中Tie::File证明是我能够处理的最佳答案。我现在准备开始用CGI编写程序,需要问一下:有哪些Perl模块不能在CGI中使用,尤其是Tie::File?如果存在任何复杂性,该如何解决?

2个回答

11

CGI(通用网关接口)基本上只是一个程序,它从 STDIN 读取请求并通过 STDOUT 输出标题和 HTML。它并没有什么特别之处:如果你足够努力的话,就没有任何你无法使用的模块。

即使是图形化的模块(例如 GTK),只要你够努力,也是可以让它们工作的。但除非你是我曾经不得不为之工作的第三方供应商,否则你可能并不会想这样做。

但请记住,你的程序可能会同时运行多个副本(每个 Web 请求一次),因此如果你使用平面文件,你将不得不处理锁定问题。


这确实对我有很大帮助,但如果您知道,Tie::File 会有任何限制吗?目前我认为应该没问题,但如果出现任何问题,我肯定需要帮助弄清楚我需要做什么才能使它在 CGI 中工作。非常感谢。 - John
只要在你要运行CGI的环境中可用,它就应该可以工作。我相信,即使不使用Tie::File,也可以简单地将其与foo.cgi文件一起放在适当的库目录中。当然,更好的方法是使用CPAN进行安装。 - tsee
2
Tie::File随perl一起提供,因此它应该已经存在。如果您锁定文件,它应该可以正常工作。 - derobert

0

确保您的数据文件可以被CGI进程读取写入。我之所以添加这个答案是因为它引起了一个非常奇怪的错误。我有一个脚本无法从CGI运行。事实上,CGI可以很好地读取数据的内容,但Tie::File失败了(尽管如果我从命令行调用它,它就可以正常工作)。原来权限设置为-rw-rw-r--,这意味着世界上只有我的用户和群组才能写入它,但其他人可以读取。由于CGI进程没有写权限,因此在CGI中Tie::File失败了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接