http://qs1969.pair.com?node_id=775170


in reply to Re^3: file comparison
in thread file comparison

I decided to do it the md5 way. So how would i accomplish this. I have it reading the directorys assign it to an array. Right now I am just printing the md5 hash from each element in the array. How would I assign each item to the array, and then loop though each array and compare each field?
opendir(DIR, $RemoteSubDirectory); my @rFileCheck = readdir(DIR); closedir(DIR); opendir(DIR, $localCpPath); my @lFileCheck = readdir(DIR); closedir(DIR); my $c1; foreach (@lFileCheck) { print md5_base64($lFileCheck[$c1]); print "\n"; $c1++; } my $c2; foreach (@rFileCheck) { print md5_base64($rFileCheck[$c1]); print "\n"; $c2++; }

Replies are listed 'Best First'.
Re^5: file comparison
by ramlight (Friar) on Jun 26, 2009 at 21:00 UTC
    Let's back up a minute and think about the problem.

    To do the comparison, you need
    - the file to be compared (file_a)
    - the file to compare with (file_b)
    - a method of doing the comparison

    Given two lists of files (@file_a) and (@file_b), then you just need to take one from column a and one from column b, apply the comparision method, and check the result. For example you could:

    $fa = shift(@file_a); $fb = shift(@file_b); if (digest($fa) == digest($fb)) # digest=whatever method you prefer # use eq instead of == if digest retur +ns a string { # files match }
    So you have two separate problems: first generating the two lists of files so that the appropriate files match up in each list, then doing the proper digest.