Andy Lester via RT <perlbug-followup@perl.org> wrote: >> By coding it the way it was, I made it easier to read, and hence >> maintain, and I knew it would compile on both types of machines > > That was my intent, too, to make it easier to follow for the programmer by encapsulating the EBCDIC-only variables within the ifdef blocks. (Apologies for the delay in this response; I meant to follow up on this ticket some weeks ago, but doing so apparently slipped my mind.) My own view is that the net consequence of this change is to make it harder rather than easier to follow the logic in question. My biggest concerns relate to code structured like this: #ifdef EBCDIC if (convert_unicode) { … } else #endif { … } This sort of code interleaves conditionals written in two very different languages. Correctly construing the meaning of this code for all paths requires a mental dance that effectively reimplements the various translation phases of a C compiler. I'm also aware that we have a lot of code with the sort of structure in question (and, indeed, some of it is even harder to follow than this example), but I'd strongly prefer simplifying what we already have, rather than letting these structures proliferate. I think the best course of action would be to revert 11327fa125f019cb46cfadd1fcec077cbcb8e41f (though I regret saying so, because I know that you submitted this patch in a good-faith attempt to improve Perl). -- Aaron Crane ** http://aaroncrane.co.uk/Thread Previous | Thread Next