sir, thank you

I tried this approach and it is almost perfect, can
you help me fix one thing...The problem is I negated
cases where is not a following C H20

such as

B H20

then its not printed, I don't want that, I wonder if
you can modify my script slightly to let those cases
be printed.  The problem is that if I just insert a 
print IOUT; statement under the 

if (/^B .*/) {
        $b = $_;
       print IOUT $b; 
       }

then I will get repeating $b printing out...something
I don't want...please help!!


# to remove redundancy

print "Which file to remove redundant names from?\n";
$in = <STDIN>;
chomp($in);

open(I, "$in") || die "can't open file for reading:
($!)\n";
open(IOUT, ">test") || die "can't open file to write
to: ($!)\n";

while(<I>) {


   if (/^B .*/) {
        $b = $_;
        }

   elsif (/^C .*/) {
                $c = $_;
                $b =~ s/B //;
                $c =~ s/C //;
                if ($b eq $c) {
                print IOUT "B $b";
                }
                elsif ($b ne $c) {
                print IOUT "B $b";
                print IOUT "C $c";
                }

        }

   else {

   print IOUT;
   }


}

--- Wagner-David <[EMAIL PROTECTED]>
wrote:
>       Here is one approach. Used __DATA__ to hold data
> for testing. Use dchomp to remove end of line.
> 
> #!perl -w
> while(<DATA>) {
>      chomp;
>      next if ( /^\s*$/ );   # if blank line bypass
>      if ( /^B/ ) {
>         $b = $_;
>         chomp($c = <DATA>);
>         if ( $c !~ /^C/ ) {
>            printf "Expecting pairs of B,C. Received
> C, but got the foloowing for\n";
>            printf "the second record: <$c>\n";
>            die "Correct and rerun";
>          }
>       }else {
>            printf "Expecting pairs of B,C , but got
> the foloowing for\n";
>            printf "the first record: <$c>\n";
>            die "Correct and rerun";
>       }
>      $b =~ s/B //;
>      $c =~ s/C //;
> 
>      if ($b eq $c) {
>      print "B $b\n";
>      }
>      elsif ($b ne $c) {
>      print "B $b\n";
>      print "C $c\n";
>      }
> 
>   }
> __DATA__
> B water
> C water
> 
> OUTPUT:
> B water
> 
> 
> Wags ;)
> -----Original Message-----
> From: M z [mailto:[EMAIL PROTECTED]]
> Sent: Monday, March 04, 2002 12:19
> To: [EMAIL PROTECTED]
> Subject: urgent redundancy question
> 
> 
> Hi
> 
> I'm trying to remove to analyze two successive lines
> in a row and remove one of them if they say the same
> thing, like so...based on different beginning
> charactes
> 
> sample input:
> 
> B water
> C water
> 
> if so, then only keep B water and discard C water
> 
> I tried doing so with this snippet, but it wasn't
> exactly working as scheduled
> 
> I thought I would force analysis after the one time
> through the while, before the variables were changed
> in the second iteration of the while, but this was
> printing them way too many times!!!  can someone
> please help an otherwise distressed individual.
> 
>       
> 
> __________________________________________________
> Do You Yahoo!?
> Yahoo! Sports - sign up for Fantasy Baseball
> http://sports.yahoo.com
> 
> -- 
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, e-mail:
[EMAIL PROTECTED]


__________________________________________________
Do You Yahoo!?
Yahoo! Sports - sign up for Fantasy Baseball
http://sports.yahoo.com

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to