#perl
#perl
Вопрос:
Это текущий код, который вручную вводит исходный каталог и каталог назначения. https://github.com/klgabs/perl/blob/main/zip_and_move.pl
Моя цель — использовать ссылочный файл в качестве исходного каталога и манипулировать целевым каталогом, который почти такой же, как исходный каталог, за вычетом ПРОМЕЖУТОЧНОГО местоположения
файлы ссылок будут выглядеть следующим образом в текстовом файле.
/archives/data/mefab/STAGING/PRODUCTION
/archives/data/bkfb/STAGING/PRODUCTION
/archives/data/sast/STAGING/PRODUCTION
/archives/data/cast/STAGING/PRODUCTION
/archives/data/advan/STAGING/PRODUCTION
Ответ №1:
Я думаю, вы спрашиваете, как перейти от
my $stage = "/archives/data/mefab/STAGING/PRODUCTION";
Для
my $prod = "/archives/data/mefab/PRODUCTION";
Опции:
-
my $prod = "$stage/../../PRODUCTION";
-
use Cwd qw( abs_path ); my $prod = abs_path("$stage/../../PRODUCTION");
-
use Path::Tiny qw( path ); my $prod = path($stage)->parent(2)->child("PRODUCTION");
Если вы не хотите жестко кодировать PRODUCTION
,
-
use File::Basename qw( basename ); my $prod = "$stage/../../" . basename($stage);
-
use Cwd qw( abs_path ); use File::Basename qw( basename ); my $prod = abs_path("$stage/../../" . basename($stage));
-
use Path::Tiny qw( path ); $stage = path($stage); my $prod = $stage->parent(2)->child($stage->basename());
В качестве альтернативы вы могли бы начать с
my $base = "/archives/data/mefab";
Тогда все, что вам нужно, это
my $stage = "$base/STAGING/PRODUCTION";
my $prod = "$base/PRODUCTION";