use Text::Diff;
my $count;
our $stats2 = 0;
for($count = 0; $count <= 1000; $count++){
my $data_dir="archive/oswiostat/oracleapps.*dat";
my $data_file= `ls -t $data_dir | head -1`;
chomp($data_file);
while(defined($data_file)){
print $data_file;
open (DAT,$data_file) || die("Could not open file! $!");
my @stats1 = stat $data_file;
@raw_data=<DAT>;
close(DAT);
print "Stats1 is :$stats1[9]\n";
sleep(5);
print "Checking $stats1[9] equals $stats2\n";
chomp $stats[9];
chomp $stats2;
if($stats1[9] != $stats2){
print "I am here";
my @diff = diff \@raw_data, \@raw_data2, { STYLE => "Context" };
@trim_diff = removedash(@diff);
print "@trim_diff";
}
@[email protected]_data;
$stats2 = $stats1[9];
print "Stat2: $stats2\n";
}
}
sub removedash {
print "Its in sub";
my $cnt=0;
foreach (@_) {
chomp;
if (/^- /){
s#^- ##g;
$ar[$cnt] = "$_\n";
$cnt++;
}
}
return (@ar);
}
배열에서 대시를 제거하고 다시 보내려면 하위를 사용하고 있습니다. @trim_diff는 @ar를 반환해야하지만 아무것도 표시하지 않습니다. 내가 어디에서 잘못했는지 모르겠습니다. 너희들이 도와 줄 수 있니?배열 반환이 작동하지 않습니다
"들여 쓰기"라고하는이 작은 것이 있습니다. 당신은 그것을 조사해야합니다. –
'@ ar'을 반환하지만 결코 선언하지 마십시오. 당신은'strict '를 사용해야한다. –
return 문이 작동해야합니다 (괄호는 필요하지 않습니다). 프로그램에서 읽고있는 데이터가 무엇인지 알면 도움이 될 수 있습니다. –