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

解決済みの質問

windows環境でのperlのパス

以下の環境で開発をしています。

OS: windows XP
ActivePerl 5.8.8
apache 2.0.64

レンタルサーバで利用しやすいようにperlスクリプトの第1行目に
#!/usr/bin/perl
を記述していますが、ActivePerl のありどころが C:\dev\perl\bin\なので第1行目を
#!/dev/perl/bin/perl 
にしなければなりません。
#!/usr/bin/perlの記述をそのまま使う為に巷でよく言われているようなwindowsのジャンクション機能を利用しています。
Cドライブ直下に「usr」ホルダを作り、ここにC:\dev\perl\bin\のジャンクションを設定しました。
するとC:\usr\を覗くとbin\が存在します。つまりC:\dev\perl\bin\はC:\usr\bin\でアクセスできるようになります。
しかしこの状態で#!/usr/bin/perlの記述をそのまま使うと500エラーが出ます。
これ以外に何か良い方法はございませんでしょうか?

また同じような開発環境の皆様はperlスクリプトの第1行目をどのように対策されていますでしょうか?
宜しく御教授お願いいたします。

投稿日時 - 2011-07-07 20:28:21

QNo.6860950

暇なときに回答ください

質問者が選んだベストアンサー

C:\dev\perl\bin\ だけのジャンクションを作成したのが失敗だと思います。
C:\dev\perl\Site やC:\dev\perl\lib など他に色々とフォルダがあり、基本のpmなどはそこから読み込むので。

リソキのlinkd.exeを使っているなら、

> linkd C:\usr C:\dev\perl

とやるべきじゃないですかね。

投稿日時 - 2011-07-13 16:23:22

補足

ありがとうございます。
おっしゃる通りにC:\dev\perl\bin\と同列のフォルダをとりあえず全てジャンクション設定したら問題解決しました。
しかし正確な仕組みが理解できていません。
モジュールなんかは\siteや\libから検索するのはわかっていますが、これはperl.exeが探しに行くんですよね?違うかな?
ジャンクション設定はapacheにperlのありかを明示するために必要な設定であって

モジュールなんかはC:\dev\perl\bin\perl.exe自身が
C:\dev\perl\bin\siteとかに 
apacheを介さずに直接探しにいくので、ジャンクション設定は関係ないと思っているのですが、私の理解はどこが間違っていますでしょうか?
教えていただければ嬉しいです。

投稿日時 - 2011-07-14 16:37:35

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

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

回答(3)

ANo.3

#2です。

>モジュールなんかはC:\dev\perl\bin\perl.exe自身が
>C:\dev\perl\bin\siteとかに 
>apacheを介さずに直接探しにいくので、ジャンクション設定は関係ないと思っているのですが、私の理解はどこが間違っていますでしょうか?
>教えていただければ嬉しいです。


残念ならが不正解です。
config.plを見てみるとよいでしょう。

投稿日時 - 2011-07-15 14:13:34

ANo.1

3年前のQ&Aがいまでもヒントになるようならどうぞ。

http://okwave.jp/qa/q4323948.html の私の過去の回答ANo.2 へのお礼

投稿日時 - 2011-07-08 00:22:06

補足

レジストリをいじるのは後で問題があった時、解決させる自信がないので今回は見合わせます。しかしながら参考になりました。
回答ありがとうございました。

投稿日時 - 2011-07-10 15:20:50