记一次学习perl写CGI遇到的ERROR

原创 2013年12月04日 15:53:17

初学perl写CGI,遇到N多问题,编写的脚本如下

[root@test02 learn_test]# vi hello.cgi 
#!/usr/bin/perl
use cgi;
use strict;
use warnings;
print header;
print "<B> Hello,World!</B>";

perl -c  hello.cgi 

Can't locate cgi.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/apache/htdocs/learn_test/hello.cgi line 2.

apache 日志下输出:

Can't locate cgi.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/apache/htdocs/learn_test/hello.cgi line 2.
[Tue Dec 03 12:57:33 2013] [error] [client 192.168.1.12] BEGIN failed--compilation aborted at /usr/local/apache/htdocs/learn_test/hello.cgi line 2.
[Tue Dec 03 12:57:33 2013] [error] [client 192.168.1.12] Premature end of script headers: hello.cgi

解决办法:

从两个log message的输出信息来看是缺少了cgi.pm模块,可以手工或者自动安装cgi模块

自动安装:perl -e shell -MCPAN 之后install cgi

手工安装:http://www.cpan.org/modules/01modules.index.html 查找CGI的模块包CGI.pm-3.64.tar.gz 

解压:tar zxvf CGI.pm-3.64.tar.gz 

安装:cd CGI.pm-3.64

 perl Makefile.PL 

make

make install

这样就安装好了CGI的模块,但是使用perl -c检查时发现问题依旧

在/usr/local/perl5下,发现模块名为:FCGI.PM,并不是想象中的CGI.PM。查看perl的官方CGI模块介绍

http://perldoc.perl.org/CGI/Fast.html

使用模块为: use CGI::Fast qw(:standard);

于是更改脚本语句:

#!/usr/bin/perl 
use CGI::Fast qw(:standard);
use strict;
use warnings;
print "Content-type:text/html\n\n";
#print header
print "<B> Hello,World!</B>";

再使用perl -c hello.cgi ,语法正确

再通过web访问正常!

问题解决!



相关文章推荐

Perl: Perl/CGI脚本语言编程学习资料及开发工具下载大全 (2013-3-9更新)

转载自:http://club.topsage.com/thread-361568-1-1.html,谢谢! Perl 最初的设计者为拉里·沃尔(Larry Wall),它于1987年12月18日发表...
  • gocode
  • gocode
  • 2013年07月18日 15:00
  • 2884

记一次Quartz状态ERROR的排错(服务多实例下一定要保证最新代码)

Quartz status error解决

记一次在JAVA中客户端使用axis调用webservice服务端出现的异常:Unmarshalling Error: For input string: ""

在使axis调用webservice服务端,参照网上给的demo: Call call = (Call) service.createCall(); call.setTargetEndpointAdd...
  • kry1201
  • kry1201
  • 2017年06月10日 21:25
  • 451

记一次 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock’(2) 排错流程

在linux与unix系统的socket文件是为了建立两个程序之间的连接使用的 , 而在mysql中,当mysql启动成功时,会根据配置文件中设定的路径(如:tmp/mysql.sock),在tmp中...

记一次rabbitmq的web stomp ssl连接error的错误

环境说明: 1、系统环境:centos7 2、erlang版本:17.4 3、rabbitmq版本:3.6.1 问题的现象说明: 1、按照官网说明配置了web stomp 的ssl服...

Perl CGI 调试的几种方法

今天有位女同学过来问怎么调她写的CGI脚本,因为种种原因, 开发机上启不了httpd服务器,跟我说里面的perl代码她都已经测试过了,没问题,但是build没出来,等不及了,问我怎么手工调试。本来觉得...

perl-cgi高级

一 CGI.pm中的方法(routines)调用  1. CGI.pm实现了两种使用方法,分别是面向对象的方式和传统的perlmodule方法的方式。  面向对象的方式:     #!/usr/...

Ubhuntu下安装配置Apache2 Perl cgi-bin

首先安装sudo apt-get install libperl-dev 去http://httpd.apache.org/download.cgi#apache22下载httpd 安装方法:./...

Linux下 Apache服务器配置CGI(perl)

1、 环境: 操作系统:Linux 3.18.0-kali3-amd64 #1 SMP Debian 3.18.6-1~kali2 x86_64 GNU/Linux Apache:Apache/2.2...

Perl & Python编写CGI

最近偶然玩了一下CGI,收集点资料写篇在这里留档。 现在想做HTTP Cache回归测试了,为了模拟不同的响应头及数据大小,就需要一个CGI按需要传回指定的响应头和内容,这是从老外的测试页面学习到的经...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:记一次学习perl写CGI遇到的ERROR
举报原因:
原因补充:

(最多只允许输入30个字)