use Text::Diff;
for($count = 0; $count <= 1000; $count++){
my $data_dir="archive/oswiostat/oracleapps.*dat";
my $data_file= `ls -t $data_dir | head -1`;
while($data_file){
print $data_file;
open (DAT,$data_file) || die("Could not open file! $!");
$stats1 = (stat $data_file)[9];
print "Stats: \n";
@raw_data=<DAT>;
close(DAT);
print "Stats1 is :$stats1\n";
sleep(5);
if($stats1 != $stats2){
@diff = diff \@raw_data, $data_file, { STYLE => "Context" };
$stats2 = $stats1;
}
print @diff || die ("Didn't see any updates $!");
}
}
Выход:В Perl, как я могу посмотреть каталог изменений?
$ perl client_socket.pl
archive/oswiostat/oracleapps.localdomain_iostat_12.06.28.1500.dat
Stats:
Stats1 is :
Didn't see any updates at client_socket.pl line 18.
Можете ли вы сказать мне, почему статистика не хватает и как это исправить?
Я не верю, что это код, который вы на самом деле бежали. $ data_file будет содержать имя файла, за которым следует новая строка, поэтому open будет терпеть неудачу, поэтому он умрет. «Chomp» исправит это. Есть много других проблем, но в чем смысл комментировать что-то, что не является вашим кодом? Я настоятельно рекомендую вам начать с добавления 'use strict; использовать предупреждения "и исправить эти ошибки. – ikegami
у него есть файл, как вы видите, он напечатан в первой строке как «archive/oswiostat/oracleapps.localdomain_iostat_12.06.28.1500.dat» – VeerM
Нет, у него есть '' archive/oswiostat/oracleapps.localdomain_iostat_12.06.28.1500.dat \ n "' – ikegami