0

私は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 がないようです。あれは正しいですか?誰でもこれで私を助けることができますか?

4

1 に答える 1

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;
于 2013-04-20T21:11:22.423 に答える