I'm using it to update existing MD5 files when I got new data files.
Usage example:
addmd5 md5sums *.avi
use strict; use warnings; use Digest::MD5; my $md5file = shift; my @files = @ARGV; die "Usage: addmd5 <md5sumfile> <files>\n" if !defined $md5file or ! - +e $md5file or !@files; # Read existing MD5 sums open (MD5FILE, '<', $md5file) or die "Couldn't open '$md5file'.\n"; my %md5files = map { chomp; substr($_, 34) => 1 } <MD5FILE>; close (MD5FILE); # Append new MD5 sums open (MD5FILE, '>>', $md5file) or die "Couldn't open '$md5file' for ap +pending.\n"; foreach my $file (@files) { next if exists $md5files{$file}; my $ctx = Digest::MD5->new; open (my $fh, '<', $file) or die "Couldn't open data file '$file'\ +n"; $ctx->addfile($fh); close ($fh); my $line = sprintf "%s %s\n", $ctx->hexdigest(), $file; print $line; print MD5FILE $line; } close (MD5FILE); __END__
|
|---|