#!/usr/bin/perl use warnings; use strict; use Data::Dumper; ############## my $md5files={}; my $filesmd5={}; while (my $line=){ chomp $line; my ($fn,$md5)=split(' ',$line,2); push @{$md5files->{$md5}},$fn; $filesmd5->{$fn}=$md5; } # line for my $md5 (keys %$md5files){ my $md5list=$md5files->{$md5}; if (scalar(@$md5list) == 1 ) { print $md5."\n ".$md5list->[0]."\n";} else { print $md5."\n"; for my $file (sort @$md5list){ print ' '.$file."\n"; } } } # md5 for my $file (sort keys %$filesmd5) { my $md5list=$md5files->{$filesmd5->{$file}}; if (scalar(@$md5list) == 1 ) { print $file." is unique\n";} else { print $file." is the same as\n"; for my $filed (sort @$md5list){ print ' '.$filed."\n" unless ($file eq $filed); } } } # file exit; __DATA__ file2 d41d8cd98f00b204e9800998ecf8427e file1 5bb062356cddb5d2c0ef41eb2660cb06 file3 d41d8cd98f00b204e9800998ecf8427e file4 d41d8cd98f00b204e9800998ecf8427e file5 5bb062356cddb5d2c0ef41eb2660cb06 file6 d617c2deabd27ff86ca9825b2e7578d4