プロが教えるわが家の防犯対策術!

ローカル環境ではstrictを
ダウンロードしていれた記憶もないので
標準モジュール かな?っと思っていたのですが

さくらインターネットを借りようとしているのですが
use strict;
を書くとInternal Server Error
になるんです。


XML::XPath;
など
ほかのモジュールは、http://theoryx5.uwinnipeg.ca/ppms/
からダウンロードして
use lib '
で使えるようにしたのですが、

strictだけ みつからないので
動作確認して使えないんです。

strict.pmを配布しているサイトをご存じでしたら
教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

標準パッケージで、libにあると思います


ローカル環境で見つかると思いますが。

この回答への補足

レンタルサーバー側の問題だったようです。

年末
 確認コードをいれて確認しましたら
使えるようになっていました
 (他の方が苦情をいれたのかも?)


/usr/local/lib/perl5
の下位フォルダにstrict.pmが入っていることが確認できました

以前は、strict.pmが、はいっていませんでした。

補足日時:2005/12/27 16:55
    • good
    • 0
この回答へのお礼

エラーになるので
コード内のstrictは全部コメントにしました。

 サーバー側で使えない設定にしてあるのかも
しれないです・・・

お礼日時:2005/10/20 08:43

まずstrictは一般的に配布されているようなモジュールとは違い、(大雑把に)Perl内部に影響を与えるプラグマモジュールというものです。


全て小文字の名前ならプラグマです。

そして、strictの場合何が変わるかというとコーディングに厳格なルールを設定します。
それに沿わなければエラーとなります。

もし
use lib '
をそのまま書いてるならこっちが原因です。

どちらにせよエラーメッセージはHTTPサーバのエラーログに記載されています。
use CGI::Carp 'fatalsToBrowser';
でブラウザからエラーを確認することもできます。

この回答への補足

strict をコメントにすると
問題なく動作しています。
ここにかいたものは、便宜上'以降の パスを省略しているだけで
use libは問題なく動作しています。

strict を使いたいので、
質問をしました。

補足日時:2005/10/20 13:19
    • good
    • 0
この回答へのお礼

#!/usr/local/bin/perl
use strict;
print "Content-Type: text/html\n\n";

use strict;
の1行だけでエラーになります。


運用する予定のコードは、
ローカルと他のレンタルサーバーでは動いたので
コードの問題ではないきがしています。

 さくらではコメントにすると動きますが・・・なるべくならコメントにはしたくないのです・・・


他のと同様に
libパスにローカルのstrict.pmを送ってみましたが
やはりエラーになるので


さくらでstrictを使うには特別な設定がいるのかなぁと・・・

お礼日時:2005/10/20 13:27

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QCan't locate R.pm in @INC

perl初心者でまた質問させていただきます。
CGIを作っているのですが、R.PMが使えなくて困っています。

USE R;
とすると、以下のようなエラーが出てしまいます。
Can't locate R.pm in @INC (@INC contains: /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl .) at /srv/www/htdocs/cgi/ringo.cgi line 5.
BEGIN failed--compilation aborted at /srv/www/htdocs/cgi/ringo.cgi line 5.
Premature end of script headers: ringo.cgi

そこで、
locate R.pm
で、場所を探しました。

/usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/R.pm
ということで、
use R '/usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/';
このように変えてみたものの、同じエラーです。ちなみに、CGIではなく、PERLのプログラムからだと、use R;で動作することは確認しました。

よろしくお願いします。

perl初心者でまた質問させていただきます。
CGIを作っているのですが、R.PMが使えなくて困っています。

USE R;
とすると、以下のようなエラーが出てしまいます。
Can't locate R.pm in @INC (@INC contains: /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_pe...続きを読む

Aベストアンサー

BEGIN {
push(@INC, '/usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/');
}
use R.pm;
でもだめ?
 ひょっとしてCGIとローカルテスト?で位置が違う??
telnetで接続して、
locate  find
では??


人気Q&Aランキング