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.#! /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 || ''; } }
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 patternexample 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
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |