http://qs321.pair.com?node_id=240558


in reply to Flag variables

Flag variables are often a warning of using the wrong program structure.

On the other hand, I came across some convulted printing code :

if ( ..A... ) { if ( ..B.. ) { if ( ..C.. ) { if ( ..D.. ) { print ..... } else { print ... } } else { if ( .. D2.. ) { ... you get the idea ...
It took some effort to reverse engineer the original specs, but I was able to simplify it to:

my $flag1 = cond1; my $prefix = (( cond2 ) ? "strting1" : "strring2"; ... print "$prefixA$suffixB" if ( condC );
While things are spread out in the sense that things are detected and saved in flags in one spot, and used later, it avoids dealign with a highly nested conditional ( especially since some possible states were ignored.

Of course, there are other solutions to the problem I encountered, but that's not relevant tothe topic of flag variables.