Народ, помогите плиз?
Нужно написать скрипт на перл а у меня с ним опыта вобще никакого.
Задача:
Есть 4 папки в папке /weblogs
в каждой из них лежит немерянное количество архивированных логов апача.
Теперь есть файлик с 80тью IP адресами, и надо получить отчет какой адрес в каком файле встречается.
Человек который поставил задачу посоветовал применить перл хэши.
Вот сижу теперь ломаю голову что это такое и с чем его едят :(Заранее благодарен за помощь.
<pre>
#!/usr/bin/perluse File::Find;
$addr_file = 'addr.txt';
my %h;
open(F, "< $addr_file");
map{ chomp; $h{$_}={}; } <F>;
$cpath = `pwd`;
chomp $cpath;find(\&wanted, "./");
map{
my $h = $h{$_};
my $addr = $_;
map{
print "$a\t$_\n";
} sort {$a cmp $b} keys %$h;} sort{ $a cmp $b} keys %h;
sub wanted{
if (-f $_){
my $n = $File::Find::name;
if ($n =~ s/^\.//){
$n = $cpath.$n;
}
open(F, "< $_");
local $/=undef;
my $s = <F>;
map{
if (index($s, $_) >=0 ){
${$_}{$n}++;
}
} keys %h;
}
}<pre>
Это будет работать в родительском каталоге и просматривать все файлы в этом каталоге(с поиском).
Если файло сжатые, то надо разжимать (можно на лету) но для начала надо изучить основные понятия языка.
Вместо:
map{
print "$a\t$_\n";
} sort {$a cmp $b} keys %$h;
Надо:
map{
print "$addr\t$_\n";
} sort {$a cmp $b} keys %$h;