eval() a zatez systemu
Honza Pazdziora
adelton na informatics.muni.cz
Pátek Duben 17 11:34:49 MEST 1998
>
> Mam radost ze je tu nova konference prave o Perlu.
My mame taky radost ;-)
> Rad bych se zeptal na vase zkusenosti s nasledujicim:
>
> V jednom WWW projektu jsem pouzil docela sikovnou knihovnu
> Text:Template. Ta umoznuje pouzivat template, ve kterem vse, co je ve
> slozenych zavorkach je vyraz v Perlu a misto tech zavorek se pak
> dosadi vysledek toho vyrazu.
>
> Knihovna pro to pouziva (jak take jinak) funkci eval(). Mam trosku
> obavy ze pro eval() musi Perl nacist do pameti prekadac, tzn. program
> ma asi o dost vetsi naroky na zdroje systemu nez pokud by eval()
> nepouzival. Vzhledem k tomu ze v kazdem template muze byt i nekolik
> desitek eval() muze to byt pro zatizenejsi servery nevhodne. nebo se
> mylim?
Ja tu knihovnu nepouzivam, ale donutil jste me si ji nainstalovat
a podivat se na manove stranky a na zdrojaky, protoze Vase obavy me
vydesily. Nastesti tam problem neni.
Takze: pokud chcete pouzit Perl, tak spoustite interpret, typicky
/usr/bin/perl. Ten nacita zdrojovy kod skriptu (ze souboru, STDIN, -e)
a prevadi ho do nejakeho vnitrniho kodu. Na to pouziva neco, co umi
parsovat a delat takovehle veci, v podstate prekladac. Potom (ale
v pripade napriklad BEGIN sekci ihned pri prekladu) tento vnitrni kod
zacne provadet. Je to porad jeden program, ten /usr/bin/perl. On
provadi a provadi a pak narazi na eval. Ten rika, ze se ma vzit
napriklad retezec a provest jako perlovsky kod. Takze je zavolan
parser, kod prelozen do vnitrniho a spusten, nebo je vracena
(a zachycena) compile-time chyba. V kazdem pripade se na to pouziva
stejny "prekladac", ktery Vam prelozil do vnitrniho kodu Vas skript
i na priklad ten Text/Template.pm.
Tedy, pokud uz jednou spustite interpret Perlu, tak se na eval nic
dalsiho nenatahuje.
Doufam, ze jsem Vas uklidnil.
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
I can take or leave it if I please
------------------------------------------------------------------------
Další informace o konferenci Perl