Morten Guldager wrote:
> 2006-09-16 Michael Zedeler wrote
>
>>Morten Guldager wrote:
>>
>>>Jeg vil gerne lave en package som "producerer sig selv"
>>>
>>>Alle metoderne kan autogenereres ud fra et simpelt stykke
>>>kode. Det skal dog gøres runtime. (f.eks. i en BEGIN blok)
>>>
>>>Men jeg kan dog ikke lige gennemskue en brugbar syntax der
>>>kan klare ærterne. Forslag?
>>>
>>>Jeg _tror_ ikke eval er sagen.
>>
>>Hvorfor skulle man ikke kunne bruge eval?
>>
>>$min_kode = funktion_der_laver_en_masse_kode();
>>eval($min_kode);
>
>
> Jo, det er jeg med på.
>
> Men den generede kode skal ende som en package jeg kan
> servere for SOAP::Lite.
>
> Jeg koder på en SOAP server. (standalone, ingen apache her...)
>
> SOAP::Lite fodres med et package navn, og så bliver alle
> sub's i den package gjort tilgængelige.
>
> Hvis jeg bruger eval, så er det helel jo væk igen når
> eval afsluttes.
Øh. Nej. Koden evalueres i din eksisterende kontekst med alle de
sideeffekter, der kan være.
$sub = <<EOM;
sub hej {
print "Hej\n";
}
EOM
eval($sub);
hej();
Vil udskrive "Hej\n". Prøv selv.
> Mon jeg kan lave en generisk funktion som kan have flere
> navne i min package, og hvor kunktionen selv kan "se"
> hvilket navn den blev kaldt med netop denne gang?
Det kan man også godt, men det er temmelig grimt og ødelægger en del
muligheder, der er rare at have.
Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
I am less likely to answer usenet postings by anonymous authors.
Visit my home page at
http://michael.zedeler.dk/