in reply to polymorphic perl

The child is not running the parent. It is merely telling the web-server what to print to the browser which can then turn around and give the webserver another request that will again execute the parent.

While playing with this I suggest taking CGI out of the picture. That will greatly simplify what is going on and let you understand better what is happening. (Random note, rather than writing a temp file then calling system, try doing an, open (PIPE, "| perl) then writing out your Perl script directly to the pipe.)

Incidentally the idea of polymorphic code has come up before. For instance camel code, and Genetic Programming or breeding Perls. There is more discussion at Code that writes code. And if you wanted to get truly bizarre, look at Lingua::Romana::Perligata.

Replies are listed 'Best First'.
Re: Re: polymorphic perl
by epoptai (Curate) on Jan 01, 2001 at 15:02 UTC
    Thanks tilly, i was confused about that. I still don't really expect that behavior. I narrowed down the source of my confusion with a perl to english translation:
    1. Parent creates child and (system) executes it.
    2. Child modifies parent (file).
    3. Child calls parent URL with a CGI parameter.
      (at this point i would expect the parent to reload and ignore it's last line but)
    4. Parent executes its last line of code which deletes the child.
    5. Changed parent reloads with parameter supplied by the child.
    This seems strange to me. I experimented with $| in both parent and child with no change (because sometimes this radically effects chained scripts, like when there's multiple children each with print statements, which is different but...

    I noticed that the parent waits for the child to finish before executing any number of remaining lines in itself except print statements (which are just ignored!), before the browser responds to the Location print of the child.

    Thanks for summarizing all the nodes on perlmonks relating to this. I've seen most of them but except for the camel code spoiler didn't learn much (because my humps aren't that big yet ;-). Other references include the Camel pages 44 and 140, Cookbook recipe 7.6, and:

    Thank you tye for clearing up the filesystem issue. I'll have to come back to this node to tackle Dominus' contribution someday after i've read a few perl books with carnivores on the cover.