#! /u/ss/bin/perl -w $pattern = qr/ ([^=]*=\s*\(DESCRIPTION\s*=\s* \(ADDRESS_LISTS\s*=\s*\(ADDRESS\s*=\s* \(COMMUNITY\s*=\s*[^)]*\)\s*\(PROTOCOL\s*=\s*TCP\)\s* \(HOSTS\s*=\s*[^)]*\)\s*\(PORTS\s*=\s*\d+\)\s*\)\s*\)\s* \(CONNECT_DATA\s*=\s*\(SID\s*=\s*[^)]*\)\s* [(GLOBAL_NAME\s*=\s*[^)]*)]?\s* \)\s*\)/x; open (FILE, "tnsnames.ora") or die $!; while (<>) { if(/$pattern/){ push @unsorted, $pattern; } } close FILE; @unsorted = sort @unsorted; open (FILE, "tns.log") or die $!; while (<>) { if(/$pattern/) { push @sorted, $pattern; } } close FILE; $x = pop @unsorted ||'' ; $y = pop @sorted ||'' ; while ($x || $y) { if($x gt $y) { print "missing from file1: $x \n"; $x = pop @sorted ||'' ; } elsif ($y gt $x) { print "missing from file2: $y \n"; $y = pop @sections ||'' ; } else{ $x = pop @sorted ||'' ; $y = pop @sections ||'' ; }