Here is my updated code.
#! /u/ss/bin/perl -w $pattern=qr/ ( ^[^=|#]*=\s*\(DESCRIPTION\s*=\s* \(ADDRESS_LIST\s*=\s*\(ADDRESS\s*=\s* \(COMMUNITY\s*=\s*[^)]*\)\s*\(PROTOCOL\s*=\s*TCP\)\s* \(HOST\s*=\s*[^)]*\)\s*\(PORT\s*=\s*\d+\)\s*\)\s*\)\s* \(CONNECT_DATA\s*=\s*\(SID\s*=\s*[^)]*\)\s*\)\s* \)\s* ) /x; open FILE,"tnsnames.ora" or die $!; {local $/=undef; $_ = <FILE>; } close FILE; print "This is tnsnames.ora\n"; @sections=/$pattern/g; foreach $el (@sections) { print $el; } @sorted=sort @sections; open FILE,"tns.log" or die $!; {local $/=undef; $_ = <FILE>; } close FILE; @sections=/$pattern/g; print "This is tns.log\n"; foreach $el (@sections) { print $el; } $x=pop @sorted || ''; print "This is $x\n"; $y=pop @sections || ''; print "This is y: $y\n"; 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 || ''; } }
When I first try to print the @sections array for the first file there is nothing. when i print it for the 2nd file i get output. I am wondering if my pattern not matching the 1st file but somehow matching the 2nd file.

example for first file: ############### # Filename......: tnsnames.ora # Name..........: LOCAL_REGION.lanier.com # Date..........: 24-OCT-95 14:30:07 ################ ##### TF #####Oracle Application File Server FNDFS_tf.lanier.com = (DESCRIPTION = (ADDRESS = (COMMUNITY = tcp.lanier.com) (PROTOCOL = tcp ) (HOST = tf.lanier.com) (PORT = 1521) ) (CONNECT_DATA = ( SID = FNDFS ) ) ) sdbet.lanier.com = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = tcp.lanier.com) (PROTOCOL = TCP) (Host = sb.lanier.com) (Port = 1521) ) ) (CONNECT_DATA = (SID = sdbet) (GLOBAL_NAME = sdbet.lanier.com) ) )

I am trying to ignore the lines that start with # in my pattern

example of 2nd file: acp.lanier.com = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = tcp.lanier.com) (PROTOCOL = TCP) (HOST = st.lanier.com) (PORT = 1533) ) ) (CONNECT_DATA = (SID = utl) ) ) acpd.lanier.com = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = tcp.lanier.com) (PROTOCOL = TCP) (HOST = sp.lanier.com) (PORT = 1531) ) ) (CONNECT_DATA = (SID = utld) ) )


In reply to Re: Sort and Compare Files by lanier
in thread Sort and Compare Files by lanier

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.