use strict; use warnings; use Digest::MD5 qw(md5 md5_hex md5_base64); print "1..3\n"; # To update the EBCDIC section even on a Latin 1 platform, # run this script with $ENV{EBCDIC_MD5SUM} set to a true value. # (You'll need to have Perl 5.7.3 or later, to have the Encode installed.) # (And remember that under the Perl core distribution you should # also have the $ENV{PERL_CORE} set to a true value.) my $EXPECT; if (ord "A" == 193) { # EBCDIC $EXPECT = <new->add($data)->digest ne $md5bin) { print "$file: MD5->new->add(...)->digest failed\n"; $failed++; } if (Digest::MD5->new->add($data)->hexdigest ne $md5hex) { print "$file: MD5->new->add(...)->hexdigest failed\n"; $failed++; } if ($B64 && Digest::MD5->new->add($data)->b64digest ne $md5b64) { print "$file: MD5->new->add(...)->b64digest failed\n"; $failed++; } my @data = split //, $data; if (md5(@data) ne $md5bin) { print "$file: md5(\@data) failed\n"; $failed++; } if (Digest::MD5->new->add(@data)->digest ne $md5bin) { print "$file: MD5->new->add(\@data)->digest failed\n"; $failed++; } my $md5 = Digest::MD5->new; for (@data) { $md5->add($_); } if ($md5->digest ne $md5bin) { print "$file: $md5->add()-loop failed\n"; $failed++; } print "not " if $failed; print "ok ", ++$testno, "\n"; } sub digest_file { my($file, $method) = @_; $method ||= "digest"; #print "$file $method\n"; open(FILE, $file) or die "Can't open $file: $!"; my $digest = Digest::MD5->new->addfile(*FILE)->$method(); close(FILE); $digest; } sub cat_file { my($file) = @_; local $/; # slurp open(FILE, $file) or die "Can't open $file: $!"; # For PerlIO in case of UTF-8 locales. eval 'binmode(FILE, ":bytes")' if $] >= 5.008; my $tmp = ; close(FILE); $tmp; }