I recently stumbled in a program over the following
(appearantly working) code for recursively processing
include files without using recursive functions. Note
that in this particular case it is guaranteed that
we won't go to infinite recursion due to include
files indirectly included into themselves:
# @ctOutput : Content of some source file, containing
# among others some 'include' directives
foreach( @ctOutput ) {
if( $_ =~ /^\s*include (.*)/ ) {
open(INC, "<$1");
push @ctOutput, <INC>; # <==== !!!!
close INC;
} else {
# process non-include lines here
}
The funny part here is that @ctOutput is modified
during the loop by *appending* the content of the
included files at its end. Yes, I know, this looks
also strange because the included lines are put at
the end, and not at the place of the include statement,
but in this particular application this is OK.
My question is about the modification of the LIST,
which is usually not something we ought to do. But,
aesthetics aside, is the construct
foreach (@x) { ..... push @x,'something'; ..... }
guaranteed to work, i.e. as long as we just extend
the list at the end, will the program be portable?
I personally doubt it will, but would like to know
other opinions on it.
Ronald
--
Ronald Fischer <ynnor@mm.st>
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: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.