#!/usr/bin/perl use strict; use warnings; $#ARGV == 1 or die "USAGE: dudiff.pl "; my %old; open my $fh, '<', $ARGV[0] or die; while (<$fh>) { /^([0-9]+)[ \t]+(.*)$/ or die; $old{$2} = $1; } close $fh; my %change; open $fh, '<', $ARGV[1] or die; while (<$fh>) { /^([0-9]+)[ \t]+(.*)$/ or die; $change{$2} = $1 - ($old{$2} // 0); } close $fh; foreach my $file (keys %old) { if (! exists $change{$file}) { $change{$file} = - $old{$file}; } } foreach my $file (sort {$change{$b} <=> $change{$a}} keys %change) { printf "%d\t%s\n", $change{$file}, $file; }