この日記の方針。
- この日記では、超初心者向けの内容は取り扱っておりません。モジュールの利用など、実践的な内容が中心となります。
- ここに貼られるソースは、基本的にそのままでは動かないものばかりです。各自の責任でご利用ください。
- 内容が間違っていることがあります。その際はご指摘いただけるとありがたいです。「検証してみたら違う結果が出た」などの報告も大歓迎です。
- perl -e die
2006-08-26 (Sat)昨日の続き
■ [CPAN] ローカルインストールしたライブラリにパスを通す

昨日の続き。弊社のトッププログラマの方と相談してきた。
use lib qw(/path/to/lib)
やっぱりこれかあ。。。
複数のCGIから共通の設定スクリプトを読んでいたりするとやりやすい。1個書き換えれば済むんだから。
/usr/bin/perl -I/path/to/lib
実行時の引数にいれてしまう方法。特定のCGIだけで特殊なモジュールを使いたい場合はこれも可。use lib qw(/path/to/lib) とあまり変わらないような。
ラッパーにしちゃう
#!/bin/sh exec /usr/bin/perl -I/path/to/lib $*
これを、~/bin/perl あたりにでも保存。パーミッションは0755*1。
# シェルの特殊変数とかも書いているので、FreeBSD日記(g:freebsd:id:Cress)に書けばよかったなあ、なんて。
で、CGIの冒頭には
#!/home/cre/bin/perl
とか書いてやると。
やっぱり一筋縄では行かないなあ。。。
どうでもいい追記
年がバレる。
トラックバック - http://perl.g.hatena.ne.jp/Cress/20060826
CGIの場合はuse lib使ってますが、.htaccessでSetEnv使うのもありかも知れません。
とりあえず、シェル実行用に.bash_profileには入れておきました。CGI実行時は、引数に入れてしまう手もあったのですが、冒頭の行が無駄に長くなって「うーん」だったので、結局use libに落ち着きました。さくらインターネットはSetEnvダメっぽいですね。。。
この問題は結構多くの方がハマるようです。それも中上級者が。。。CGI実行時に環境変数が上書きされてしまうというのはあまり知られていないようです。