こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Can'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;で動作することは確認しました。

よろしくお願いします。

投稿日時 - 2009-11-25 17:49:01

QNo.5475389

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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

投稿日時 - 2009-11-25 19:01:23

補足

さっそくご回答ありがとうございます。
ためしてみたところ、このようなエラーが出ました。
Premature end of script headers: ringo.cgi
syntax error at /srv/www/htdocs/cgi/ringo.cgi line 9, near "use R."
Execution of /srv/www/htdocs/cgi/ringo.cgi aborted due to compilation errors.

また、locate findをするとものすごい数の結果がでてきました。
...,

じつは、上に書きそこねたのですが、R.pm ローカルと二つあったようです。
locate R.pm
/disk_1/people/sys/R/RSPerl/src/R.pm.in
/usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/Encode/KR.pm
/usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/Encode/KR/2022_KR.pm
/usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/R.pm
/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/APR.pm
/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/Net/DNS/RR.pm
/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/Net/DNS/RR/MR.pm
/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/Net/DNS/RR/NAPTR.pm
/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/Net/DNS/RR/PTR.pm
/usr/local/lib64/R/library/RSPerl/perl/x86_64-linux-thread-multi/R.pm
/usr/share/YaST2/modules/YSR.pm

perl -e 'print "@INC";'
/usr/local/lib64/R/library/RSPerl/perl/x86_64-linux-thread-multi
/usr/local/lib64/R/library/RSPerl/perl
/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 .z111
ただあまり、理解しておらずどうしていいのか分からない状況です。

宜しくお願いします。

投稿日時 - 2009-11-25 19:55:40

お礼

インストールしなおしたところ、うまくうごくようになりました。何が悪かったのかよくわかりませんが。
ありがとうございました。

投稿日時 - 2009-11-26 21:16:25

ANo.1

use lib qw(/usr/lib/perl5/5.10.0/x86_64-linux-thread-multi);
use R;
でどうかな

投稿日時 - 2009-11-25 19:00:58

お礼

再インストールすると動きました。ありがとうございました。ちなみに、再インストールするまえに,教えていただいたコードを、ためしたみたのですが,エラーは変わりませんでした。

投稿日時 - 2009-11-26 21:18:10

あなたにオススメの質問