It can be confusing, sure. Think of it this way: when the parent process start()s a child process, there are, from that moment forward, two processes executing more-or-less parallel with one another. (I say “more-or-less” because the relative timing of the two can’t be exactly predicted ...) Nevertheless, both are executing the same Perl code, at the same point, but with exactly one very important difference:
- In the parent, the process-ID of the new child process is returned as the value of the call to start().
- In the child, the returned value is zero.
- And that’s how the two of them each know which one they are.
The “fork in the road” (heh...) therefore happens with and next. This is shorthand, exploiting Perl’s use of “short-circuit” expression evaluation. The parent immediately continues with the foreach loop (or ends it); the child proceeds. (Here’s the short-circuit: since 0 and anything is known to be false, the right side of the and clause (that is to say, the next statement) is never evaluated in the child.)
Ordinarily, the console-output of both processes will now be intermingled on the screen, in no particular (exactly predictable) order, and yes, you will see that the child does sleep() properly, as any process would do. If you still don’t observe that, please post a snippet of your code (remember to use <code> tags ...) so that we can point out the error of your ways. It is a bit tricky ...
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
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:
Outside of code tags, you may need to use entities for some characters:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, 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, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
| & || & |
| < || < |
| > || > |
| [ || [ |
| ] || ] ||