2011-07-12 4 views
1

FindBinモジュールを使用するPerlスクリプトのコレクションがあります。スクリプトが使用するいくつかのデータファイルがあり、それらを$FindBin::Bin/../share/somedir/で見つける予定があります。これらのファイルが現在存在するようにインストールをカスタマイズしています。/some/other/share/dir/です。環境変数のようなものでFindBinの動作をカスタマイズする方法はありますか?PerlのFindBinの動作を変更する

答えて

2

特定の問題を解決するために設計されていますので、私は、あなたがFindBinモジュールと、この問題を解決することができるとは思わない:オリジナルのperlスクリプトのディレクトリを検索します。 設定パラメータを取得するために独自のモジュールを実装する必要があります。これは次のようになります。

package MyConfig; 
use strict; use warnings; 
use FindBin; 

sub get_data_folder { 
    return ($ENV{'DEV_ENVIROMENT'} ? ## create this variable in your development 
     $FindBin::Bin."/../share/somedir/" : 
     "/some/other/share/dir/" 
    ); 
} 
1; 

これにより、すべての設定パスを1か所で制御できます。しかし、既存のコードを変更する必要があります。

+0

この問題は、他の人のPerlスクリプトのパッケージをインストールしていることです。私の唯一の解決策は自分のモデルに合わせてスクリプトを書き直していると思いますか? – ajwood

+0

'$ InstallFolder /../ share/somedir /'から '/ some/other/share/dir /'(あなたのOSがこれをサポートしている場合)にシンボリックリンクを作成することもできます。実際のファイルは必要なフォルダに置かれますが、スクリプトは古いパスを使用します。 –

+0

それは良い考えですが、私の場合はうまくいかないでしょう。私が 'share'のファイルを更新して(そこにポイントするようにシンボリックリンクを変更する場合)、私は古い共有ディレクトリを使ってスクリプトを実行する何らかの方法をユーザに許可する必要があります。 – ajwood

関連する問題