расположение файла в Perl - PullRequest
0 голосов
/ 26 июля 2011

Как подсказывает Крис, пользователь на этом сайте. В 1-м скрипте perl: значения хранятся в словаре. Первый скрипт в порядке. Первый скрипт запускается только один раз и сохраняет значения. Это работает.

Во втором сценарии:

my $ processing = retrieve ('processing_dirs.dat'); # $ обработано - это хеш-код

Здесь читается файл «processing_durs.dat», который находится в первом скрипте. Итак, мне просто интересно, как второй скрипт знает, где находится файл Processed_dirs.dat?

#!/usr/bin/perl
use strict;
use warnings;
use Storable;

# This script to be run 1 time only. Sets up 'processed' directories hash.
# After this script is run, ready to run the daily script.

my $dir = '.'; # or what ever directory the date-directories are stored in

opendir my $dh, $dir or die "Opening failed for directory $dir $!";
my @dir = grep {-d && /^\d\d-\d\d-\d\d$/ && $_ le '11-04-21'} readdir $dh;
closedir $dh or die "Unable to close $dir $!";

my %processed = map {$_ => 1} @dir;

store \%processed, 'processed_dirs.dat';

2-й сценарий:

#!/usr/bin/perl
use strict;
use warnings;
use File::Copy;
use Storable;

my $dir = shift or die "Provide path on command line. $!";

my $processed = retrieve('processed_dirs.dat'); # $processed is a hashref

opendir my $dh, $dir or die "Opening failed for directory $dir $!";
my @dir = grep {-d && /^\d\d-\d\d-\d\d$/ && !$processed->{$_} } readdir $dh;
closedir $dh or die "Unable to close $dir $!";
@dir or die "Found no unprocessed date directories";

my $fdir = '/some/example/path';

for my $date (@dir) {
    my $dday = "$dir/$date";
    my @gzfiles = glob("$dday/*tar.gz");

    foreach my $zf (@gzfiles) {  
        next if $zf =~ /BMP/ || $zf =~ /LG/ || $zf =~ /MAP/ || $zf =~ /STR/; 
        print "$zf\n";
        copy($zf, $fdir) or die "Unable to copy $zf to $fdir. $!";
    }
    $processed->{ $date } = 1;
}
store $processed, 'processed_dirs.dat';

1 Ответ

1 голос
/ 26 июля 2011

Если я что-то упустил, ответ таков: оба сценария используют файл с именем "processed_dirs.dat" в любом каталоге, из которого они запускаются.Поэтому, пока оба сценария запускаются из одного каталога, они оба будут использовать один и тот же файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...