2つのファイルが同じものか違うものかを判断するperl script
sub compare { my $self = shift; my $f1 = shift; my $f2 = shift; return 0 if (! -f $f1 || ! -f $f2); use Digest::MD5; open(FILE1, $f1) or return 0; open(FILE2, $f2) or return 0; binmode(FILE1); binmode(FILE2); my $ctx1 = Digest::MD5->new; my $ctx2 = Digest::MD5->new; # Could not work.. #$ctx1 = addfile(*FILE1); #$ctx2 = addfile(*FILE2); while () { $ctx1->add($_); } while ( ) { $ctx2->add($_); } close(FILE1); close(FILE2); my $digest1 = $ctx1->b64digest; my $digest2 = $ctx2->b64digest; if($digest1 ne $digest2) { return 0; } return 1; # same file }
File::Compareとか使えばもっときれいに書けるっぽい。
そもそもMD5などしなくてもsysreadとかで
ちょっとずつ読む→違いが見つかった時点で判断
とかしたほうが速いかもしれない。