First, I would improve the indentation:
while ($line = <DATA>) { if ($line =~ /WNT/ || $line =~ /UNX/) { print "$line\n"; } if ($flag) { if ($target_db ne 'sql') { next if ($line =~ /$target_db/i); } else { next if ($line =~ /informix/i || $line =~ /oracle/i) } print $FH "$line"; if ($line =~ /$target_os/) { undef $flag; next; } } if ($line =~ /UNX/ || $line =~ /WNT/ || $line =~ /COMPONENT/) { if(!(defined $flag)) { $flag = 1; print $FH "$line"; } } }
This is probably wrong:
if ($line =~ /UNX/ || $line =~ /WNT/ || $line =~ /COMPONENT/) { if(!(defined $flag)) { $flag = 1; print $FH "$line"; } }
In a code like this,
if ($line =~ /$target_os/) { undef $flag; next; }
NEVER, repeat NEVER fiddle fiddle around with undef as a "false" value (except in rare cirsumstances). If you mean that $flag should be "false", set $flag to "0 (zero)". A simple rationale is that if you want to print $flag for debugging, "undef" is an error. Another rationale would be that you KNOW that it is "false" not "undefined"!. So say so!

the above code is hard for me to understand your intent. Can you post some set of data and the "pass" and "fail" cases? That would be most helpful.


In reply to Re: Looking for less code by Marshall
in thread Looking for less code by Sun751

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.