Bookmarks

Yahoo Gmail Google Facebook Delicious Twitter Reddit Stumpleupon Myspace Digg

Search queries

sqldatasource dal, wwwxxxenden, convert raid5 to raid 10 mdadm, apache force chunked, nrao wwwxxx, xxxxxdup, procmail change subject header, wwwXxx not20, Wwwxxx.doks sas, linux raid resync after reboot

Links

XODOX
Impressum

#1: eval und Filter::exec

Posted on 2008-04-22 10:56:36 by kbsoft

hi,

ich verwende in meinen Scripten Filter::exec. Das funktioniert auch
gut. Nun wollte ich diese Scripte mit Hilfe eines 'embedded
persistent' servers ausf=FChren lassen. Dieser Server l=E4dt einfach das
Script in eine Variable und macht dann eval auf diese Variable. Da es
nicht funktionierte, habe ich einfach das Script von Hand in die
Variable gepackt und eval ausgef=FChrt. Tats=E4chlich scheint es so, als
ob eval Filter::exec nicht ausf=FChren kann.

Kann es bitte jemand best=E4tigen, oder sollte ich weiter suchen.

Gruss
Jan

Report this message

#2: Re: eval und Filter::exec

Posted on 2008-04-22 11:28:53 by Frank Seitz

kbsoft@gmx.de wrote:
>
> ich verwende in meinen Scripten Filter::exec. Das funktioniert auch
> gut. Nun wollte ich diese Scripte mit Hilfe eines 'embedded
> persistent' servers ausführen lassen. Dieser Server lädt einfach das
> Script in eine Variable und macht dann eval auf diese Variable. Da es
> nicht funktionierte, habe ich einfach das Script von Hand in die
> Variable gepackt und eval ausgeführt. Tatsächlich scheint es so, als
> ob eval Filter::exec nicht ausführen kann.
>
> Kann es bitte jemand bestätigen, oder sollte ich weiter suchen.

Habe mit Filter::exec keine Erfahrung. Aber da ein Source-Filter
zur Compile-Time ausgeführt wird, eval() aber zur Runtime,
passt das nach meinem Verständnis grundsätzlich nicht zusammen.

GrüÃe
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Report this message

#3: Re: eval und Filter::exec

Posted on 2008-04-23 17:45:25 by Ferry Bolhar

Jan:

> ich verwende in meinen Scripten Filter::exec. Das funktioniert auch
> gut. Nun wollte ich diese Scripte mit Hilfe eines 'embedded
> persistent' servers ausführen lassen. Dieser Server lädt einfach das
> Script in eine Variable und macht dann eval auf diese Variable. Da es
> nicht funktionierte, habe ich einfach das Script von Hand in die
> <Variable gepackt und eval ausgeführt. Tatsächlich scheint es so, als
> ob eval Filter::exec nicht ausführen kann.
>
> Kann es bitte jemand bestätigen, oder sollte ich weiter suchen.

Source Filter (auf denen Filter::exec basiert) beziehen sich stets
auf den "Current Input Path", d.h., jene Datei, die Perl gerade
einliest, wenn der Filter eingerichtet wird. Sie sind daher nur
beim Einlesen von Code-Dateien wirksam. In string-evals (zu denen
auch ein "eval $code;" gehört), finden sie keine Beachtung mehr.

Den Unterschied sieht man z.B. mit folgenden Code:

my $str = 'print __FILE__';
eval $str;

ergibt "(eval 1)", d.h., die "Code-Datei" ist hier keine echte
Datei, für die Leseoperationen (die Source-Filter verwenden)
ablaufen werden.

Aber Filter::exec macht nichts, was du nicht auch mit einer
manuell eingerichteten Pipe, durch die du deinen Code jagst,
machen könntest.

@Frank: Source-Filter werden in BEGIN-Blöcken ausgeführt,
und diese sind - im Gegensatz zu CHECK und INIT-Blöcken -
auch in eval's zur Laufzeit erlaubt; insoferne ist das also
kein Widerspruch. Aber es ist ganz einfach so, dass Source-
Filter durch den Parsercode, der die Code-Datei einliest,
aufgerufen werden. Bei einem String-eval wird nichts mehr
eingelesen und daher werden auch keine Source-Filter aufgerufen.

LG, Ferry

--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: ferdinand.bolhar-nordenkampf@wien.gv.at

Report this message