早上好,我有这段代码:
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use CGI::Carp qw/fatalsToBrowser/;
use LWP::Simple;
use List::Util qw/min max sum/;
my $urlData = "http://cgi.csc.liv.ac.uk/cgi-bin/cgiwrap/~ullrich/data.pl";
my $title = "Statistical analysis of weather data for a particular date";
#
# Display form with input fields
# Take a CGI object as input
#
等等......
print $q->end_html;
我无法运行此代码,因为会弹出有关模块的警告,但似乎没问题。对于发生了什么有任何疑问?
首先是CGI模块,但是当我对其进行评论时,以下模块也会导致相同的错误消息。
这是我收到的错误消息
无法在@INC中找到CGI.pm(您可能需要安装CGI模块)(@INC包含:/ usr / local / lib64 / perl5 / usr / local / share / perl5 / usr / lib64 / perl5 / vendor_perl / usr / share / perl5 / vendor_perl / usr / lib64 / perl5 / usr / share / perl5。)在main.pl第5行.BEGIN失败 - 编译在main.pl第5行中止
我尝试在在线编译器中运行并出错。这可以通过在编译之前在计算机中安装那些丢失的模块来解决吗?您建议使用哪个IDE来测试此代码?
tl; dr 解决方案如下:我需要安装缺少的模块。
答案 0 :(得分:2)
错误信息对我来说非常清楚:
无法在@INC中找到CGI.pm(您可能需要安装CGI模块)
您使用的是哪个版本的Perl? CGI.pm是从5.004到5.20的核心Perl模块。从5.22开始,CGI.pm已从Perl核心发行版中删除。您需要单独安装。
但是值得考虑CGI.pm从Perl核心中移除的原因 - 它是因为它不是2017年使用Perl编写Web应用程序的推荐方式。我建议阅读CGI::Alternatives,了解一些更现代的技术概述。
但是,由于您已经拥有CGI计划,我假设您不想从头开始重写它以反映现代Perl最佳实践。但是,我会敦促您从代码中删除HTML生成函数的使用。自上个世纪末they are now deprecated以来,我们已经知道它们是一个可怕的主意。请考虑将您的HTML生成移动到某种模板中(在我上面提到的CGI :: Alternatives文档中使用Template Toolkit就是一个例子)。
您还在使用子程序原型。除非您使用少量添加有用功能的情况,否则强烈建议不要使用它们。我建议删除它们。
更新:在评论中,您说:
我没有得到的是为什么我错过了这么多模块"显然"。
查看代码中的模块列表:
所以我认为主要是你的问题是假设核心中的库比实际上多。