2016-04-07 18 views
0

Aslında yeni dosyaların (.log dosyaları) oluşturulması için bir dizinin izlenmesi Bu dosyalar, bir takım tarafından üretilir ve bazı zamanlar sonra araç girişlerini yazdı Aynı dosyanın oluşturulması, bu süre zarfında dosya boş olacaktır. Perl komut dosyamda bir şey yazılıncaya kadar nasıl bekleyebilirim?

use strict; 
use warnings; 
use File::Monitor; 
use File::Basename; 
my $script1 = "~/Desktop/parser1.pl"; 
my $scrip2t = "~/Desktop/parser2.pl"; 
my $dir = "~/Desktop/tool/logs"; 
sub textfile_notifier { 
my ($watch_name, $event, $change) = @_; 

my @new_file_paths = $change->files_created; #The change object has a property called files_created, 
              #which contains the names of any new files 
for my $path (@new_file_paths) { 
    my ($base, $fname, $ext) = fileparse($path, '.log'); # $ext is "" if the '.log' extension is 
                 # not found, otherwise it's '.log'. 
    if ($ext eq '.log') { 
     print "$path was created\n"; 
     if(-z $path){ 
     # i need to wait until something is written to log 
     }else{ 
     my @arrr = `head -30 $path`; 
     foreach(@arr){ 
     if(/Tool1/){ 
      system("/usr/bin/perl $script1 $path \&"); 
     }elsif(/Tool1/){ 
     system("/usr/bin/perl $script2 $path \&"); 
     } 
    } 
} 
} 
my $monitor = File::Monitor->new(); 
$monitor->watch({ 
name  => $dir, 
recurse  => 1, 
callback => {files_created => \&textfile_notifier}, #event => handler 
}); 
$monitor->scan; 

while(1){ 
    $monitor->scan; 
} 

Temelde ben önemli bazı bilgileri grepping am

ve bir şey günlüğüne yazılır ve sebebi ben farklı senaryoyu çağırma olacak kayıt girişleri dayalı olan kadar nasıl ben bekleyebilir !, günlükleri.

+0

bir dosya kolları yoklama hakkında bir şeyler okudun daha

use File::Tail; # for log file $logname my @logdata; my $file = File::Tail->new(name => $logname, maxinterval => 1); while (defined(my $newline = $file->read)) { push @logdata, $newline; # the decision to launch the script according to data in @logdata } 

mi? – red0ct

+0

@ red0ct Hayır! Bu bilgilere bir bağlantı yararlı olacaktır – Shantesh

+1

[File :: Monitor] (http://search.cpan.org/~andya/File-Monitor-1.00/lib/File/Monitor.pm) makul bir seçenek olabilir mi? – eballes

cevap

0

Sadece günlük dosyası oluşturmayı izliyorsunuz. Belki de günlük dosyasının yazılmasını beklemek için geri arama alt kısmında bir uyku fonksiyonu kullanabilirsiniz. Dosya değişikliklerini de izleyebilirsiniz, çünkü bazı günlük dosyaları genişletilebilir.

Sorunuzun böyle formülasyonu için
3

, böyle bir şey size yardımcı olabilir: here

İlgili konular