#!/usr/bin/perl use strict; use warnings; @ARGV == 2 and -f $ARGV[0] or die "Usage: $0 list1 list2\n"; my ( $list1, $list2 ) = @ARGV; my %pathname_versions; open( IN, $list1 ) or die "$list1: $!"; while () { next unless ( m:(.+?)#(\d+)$: ); $pathname_versions{$1}{$2} = undef; } open( IN, $list2 ) or die "$list2: $!"; while () { next unless ( m:(.+?)#(\d+)$: ); if ( exists( $pathname_versions{$1} )) { # we have a match on the path/name... now what? if ( exists( $pathname_versions{$1}{$2} )) { # we have a match on version# as well, so... } else { # version number wasn't seen in list1, so... } } }