use strict; use warnings; my $fn_assn = ...; my $fn_pssn = ...; my @assns; { open(my $fh_assn, '<', $fn_assn) or die("Unable to open assn file \"$fn_assn\": $!\n"); chomp(@assns = <$fh_assn>); } my @pssns; { open(my $fh_pssn, '<', $fn_pssn) or die("Unable to open pssn file \"$fn_pssn\": $!\n"); chomp(@pssns = <$fh_pssn>); } { my %pssns = map { $_ => 1 } @pssns; my @unique_assns = grep { not exists $pssns{$_} } @assns; print("The following ASSNs have no corresponding PSSNs:\n"); print("$_\n") foreach @unique_assns; } print("\n"); { my %assns = map { $_ => 1 } @assns; my @unique_pssns = grep { not exists $assns{$_} } @pssns; print("The following PSSNs have no corresponding ASSNs:\n"); print("$_\n") foreach @unique_pssns; }