-8
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";
        }
        @raw_data2=@raw_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 が返されるはずですが、何も表示されていません。どこで間違ったのかわかりません。手伝ってくれませんか?

4

1 に答える 1

2

私はそれが機能していないことを疑います。おそらく空のリストを返しています。

あなたの機能

removedash

より適切な名前になります

remove_elements_without_dashes_and_remove_dashes_from_those_ones.

于 2012-06-29T00:39:44.500 に答える