无法找到CGIBook / Error.pm

时间:2013-04-20 19:57:49

标签: macos perl

我是perl的新手。我在macbook上运行perl脚本,我得到以下错误:

Can't locate CGIBook/Error.pm in @INC (@INC contains: /Library/Perl/5.12/darwin-thread-
multi-2level /Library/Perl/5.12 /Network/Library/Perl/5.12/darwin-thread-multi-2level
/Network/Library/Perl/5.12 /Library/Perl/Updates/5.12.3 /System/Library/Perl/5.12/darwin-
thread-multi-2level /System/Library/Perl/5.12 /System/Library/Perl/Extras/5.12/darwin-
thread-multi-2level /System/Library/Perl/Extras/5.12) at HW1_3A.pl line 5.

看起来我的perl目录中没有CGIBook。那是对的吗?任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:1)

我没有在CPAN上找到CGIBook::Error,因此它可能是本地模块或您从供应商那里得到(或应该得到)的东西。有人可能已安装在默认模块搜索路径以外的其他位置。

在这种情况下,您可能会尝试使用古老书籍 CGI Programming with Perl 中的示例,该示例为示例创建了一个具有相同名称的模块。

Google搜索错误消息很快就会产生以下代码:

#!/usr/bin/perl -wT

package CGIBook::Error;

# Export the error subroutine
use Exporter;
@ISA = "Exporter";
@EXPORT = qw( error );

$VERSION = "0.01";

use strict;
use CGI;
use CGI::Carp qw( fatalsToBrowser );

BEGIN {
    sub carp_error {
        my $error_message = shift;
        my $q = new CGI;
        my $discard_this = $q->header( "text/html" );
        error( $q, $error_message );
    }
    CGI::Carp::set_message( \&carp_error );
}

sub error {
    my( $q, $error_message ) = @_;

    print $q->header( "text/html" ),
          $q->start_html( "Error" ),
          $q->h1( "Error" ),
          $q->p( "Sorry, the following error has occurred: " ),
          $q->p( $q->i( $error_message ) ),
          $q->end_html;
    exit;
}

1;