プロが教える店舗&オフィスのセキュリティ対策術

自作のCGIを実行したところ

Can't locate BASE64 in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .) at g
etHTTP line 71.

のようなエラーが出ます。

BASE64がインストールされているかどうか確認するために、次のサイトのcheck.cgiを実行してみました。

http://perl.shtml.jp/check/check.html

インストールされているということなので、検索を掛けてBase64.pmのパスを調べました。

C:\Perl\lib\MIME

そこで以下のコードを追加して実行しなおしました。

unshift @INC, "C:/Perl/lib/MIME";

残念ながらうまく動きませんでした。

Can't locate BASE64 in @INC (@INC contains: C:/Perl/lib/MIME C:/Perl/site/lib C:
/Perl/lib .) at getHTTP line 71.

どうすれば良いでしょう。

お手数をお掛けします。

A 回答 (2件)

> unshift @INC, "C:/Perl/lib/MIME";



上の文は実行時に処理されるので、コンパイル時に処理される use 文の段階では @INC に追加されていないのでエラーになります。解消するには、いくつかの方法があると思います。

1)
use MIME::BASE64;

2)
use lib "C:/Perl/lib/MIME";
use BASE64;

3) 他にも PERL5LIB などの環境変数を設定する方法があります。OS やシェルによって設定方法が異なりますが、1度設定すれば自動的に @INC にパスが追加されます。
    • good
    • 0
この回答へのお礼

題意からするとこちらの方がベストアンサーだと思います。

そういえばuseとrequireの違いがあったなと思い出しました。日曜プログラマの悲しさというか。。。

ありがとうございます。

お礼日時:2011/11/08 07:40

use MIME::Base64;としたくないなら、require 'C:/Perl/lib/MIME/Base64.pm';



ついでながら、モジュール「HOGE::Fuga」がインストールされているか確認するなら
コマンドラインから
> perl -MHOGE::Fuga -e ''
エラーが出なければインストールされています。
    • good
    • 0
この回答へのお礼

サイトで見つけたcheck.cgiなるプログラムの中を見ると、そんなに難しいプログラムではないなと思いましたが、これをいちいち組むとなると、やっぱりプログラムって大変ですね。

それがたった一行で解決できるのは魔法のようです。ありがとうございます。

お礼日時:2011/11/08 07:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!