いくつかのサーバーに展開するための小さな perl アプリケーションを作成しました。これは、いくつかのスクリプト、いくつかのモジュール、およびいくつかのデータ ファイルで構成されています。複数のユーザーが使用します。アプリ モジュールを site_perl ディレクトリに移動するのではなく、これらすべてのファイルを 1 つのディレクトリにまとめたいと思います。
たとえば、アプリケーションが jump.pl swim.pl Common.pm と messages.txt で構成されているとします。
アプリケーション (jump.pl または swim.pl のいずれか) は、別のディレクトリから呼び出されます。アプリケーションのインストール場所が $PATH にない可能性があるため、ユーザー (または別のアプリ) がのような絶対パス名/some/path/swim.pl
または のような相対パス名でアプリケーションを呼び出す可能性があります。../path/swim.pl
アプリケーションをできるだけシンプルに再配置したいのですが、これは、アプリケーションへのパスをできるだけ少ない場所に配置することを意味します。
現時点で swim.pl と jump.pl はこのように開始します
#!/usr/bin/perl
use strict;
use warnings;
use lib '/some/path';
use Common;
#
my $basedir = '/some/path';
...
open my $fh, '<', "$basedir/messages.txt" or die ... ;
そのため/some/path
、いくつかのスクリプトとモジュールのいくつかの場所にあります。
保管する場所の数を最小限に抑えるための可能な手段として、次のことを検討しました/some/path
- 環境変数
PERL5LIB=/some/path
を設定して行うopen my $fh, '<', "$ENV{PERL5LIB}/messages.txt"
- シバン行を
#!/usr/bin/perl -I/some/path
- に設定しますが、messages.txt を見つけるにはどうすればよいでしょうか? - for in ?
use Cwd qw(abs_path);
の使い方を見つけてみてください。basename abs_path($0)
use lib
BEGIN
設置場所の柔軟性を最大化し、すべてをまとめ、設置場所の複数のハードコーディングを最小限に抑えるための提案はありますか?