Я написал небольшое приложение perl для развертывания на нескольких серверах. Он состоит из некоторых скриптов, некоторых модулей и некоторых файлов данных. Он будет использоваться несколькими пользователями. Я хотел бы сохранить все эти файлы в одном каталоге, а не перемещать модули приложения в каталог site_perl.Установка приложения Perl
Например, предположим, что приложение состоит из 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
- переменную Set среды
PERL5LIB=/some/path
и сделатьopen my $fh, '<', "$ENV{PERL5LIB}/messages.txt"
- Установите хижину строку
#!/usr/bin/perl -I/some/path
- но тогда как найти messages.txt? - Попробуйте
use Cwd qw(abs_path);
и найдите способ использованияbasename abs_path($0)
дляuse lib
вBEGIN
?
Любые предложения по обеспечению максимальной гибкости местоположения, хранению всего, минимизации множественного жесткого кодирования места установки?
Отлично, спасибо. Ох и привет от c.l. :-) – RedGrittyBrick