http://qs321.pair.com?node_id=11102847


in reply to Re^3: Comparing MDB files.
in thread Comparing MDB files.

Hi haukex

I got your point. Actually I thought I was missing something in this compare function, while calculating md5 checksum. That is why I posted that function alone. Here is the full code.

use strict; use warnings; use Digest::MD5; sub compare { my $pre_version =shift; my $new_version =shift; print("previous version: $pre_version\n"); print("new version : $new_version\n"); my $pre = Digest::MD5->new; open (PRE, "$pre_version"); $pre->addfile(*PRE); close(PRE); my $pre_digest = $pre->hexdigest; #print "pre digest=$pre_digest\n"; my $new = Digest::MD5->new; open (NEW, "$new_version"); $new->addfile(*NEW); close(NEW); my $new_digest = $new->hexdigest; #print "new digest=$new_digest\n"; if ($pre_digest eq $new_digest) { print("Equal\n"); return 0; } else { print("Not Equal\n"); return 1; } } compare($oldfile_path, $newfile_path);

Update:variable name updated from $co to $new


All is well. I learn by answering your questions...

Replies are listed 'Best First'.
Re^5: Comparing MDB files.
by daxim (Curate) on Jul 15, 2019 at 07:41 UTC
    › perl -c pm-11102847.pl Global symbol "$co" requires explicit package name (did you forget to +declare "my $co"?) at pm-11102847.pl line 21.
    You're making so many mistakes because you write so much code. Less code results in less bugs.

    I would write no code at all and just use cmp from Gnu diffutils, but if you have to to do in Perl:

    use File::Compare qw(compare); my $r = compare 'filename1', 'filename2'; if ($r == 0) { print 'same'; } elsif ($r == 1) { print 'different'; } else { die "error in comparison: $!"; }
    … but if you have to to use non-core modules:
    use Digest::MD5 qw(md5); use File::Slurper qw(read_binary); if (md5(read_binary('filename1')) eq md5(read_binary('filename2'))) { print 'same'; } else { print 'different'; }
Re^5: Comparing MDB files.
by haukex (Archbishop) on Jul 15, 2019 at 08:10 UTC