lanier has asked for the wisdom of the Perl Monks concerning the following question:
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 || ''; } }
I am trying to ignore the lines that start with # in my patternexample 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) ) )
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) ) )
Edit by tye, title, add CODE tags around data
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Regular Expressions to ignore lines starting with #
by Mr. Muskrat (Canon) on May 19, 2003 at 18:34 UTC | |
by sauoq (Abbot) on May 19, 2003 at 18:43 UTC | |
by zengargoyle (Deacon) on May 19, 2003 at 18:49 UTC | |
by sauoq (Abbot) on May 19, 2003 at 20:22 UTC | |
by Skeeve (Parson) on May 20, 2003 at 07:00 UTC | |
by lanier (Initiate) on May 20, 2003 at 12:51 UTC |