Hello Josh,

[email protected] <[email protected]> (Mi 24 Jun 
2009 10:03:29 CEST):
> 
> First, my general question, since it will haunt me well beyond my
> immediate problem - is there a way to have persistent (e.g. global or
> package-scoped) variables (including hashes, arrays, and
> objects/things like database connections) across multiple calls to
> perl, other than the pre-defined scalars offered by Exim?

AFAIK: no.

> In this case, I'm loading up multiple lines in a text file into a
> global hash in perl, hoping to do it once and read from the hash
> subsequently, but I find the hash is undefined at the start of each
> call, and the code has to read the file again.  Therefore, I figure
> each new call is in a different and fresh lexical scope and so my hash
> is gone.  The code is ostensibly working, mind you, but it's doing a
> lot of needless reading/IO on the text file (once for each incoming
> message), and soon the system will be under heavy load.

Exim fork()s a new instance for processing each incoming connection,
thus you'll have a fresh perl each time, because loading perl is delayed
until it's needed.

But -- moment - you're looking for "static" data, for a preloaded
hash/array/whatever, to do your lookup. 

May be you can test setting ``perl_at_start'', it will read your perl
file before any fork()ing and you may be able to use some BEGIN{} block
or to do other global things.

    # "doing initialization\n";
    my @a = ...

    sub mySub {
        ...
    }

> Another (preferred, in this case) approach to my immediate problem
> would be to use a return value from a perl sub as something for Exim
> to lookup in my text file, which has many single word values separated
> by newlines. In my ACL, I tried
> 
> condition = ${lookup{perl{mySub}{$local_part}}{/etc/exim4/myTextFile.txt}}

This works for me:

exim4 -C test -v -be '${lookup{${perl{mySub}{a}}}lsearch{/etc/exim4/tt}}'

    Best regards from Dresden/Germany
    Viele Grüße aus Dresden
    Heiko Schlittermann
-- 
 SCHLITTERMANN.de ---------------------------- internet & unix support -
 Heiko Schlittermann HS12-RIPE -----------------------------------------
 gnupg encrypted messages are welcome - key ID: 48D0359B ---------------
 gnupg fingerprint: 3061 CFBF 2D88 F034 E8D2  7E92 EE4E AC98 48D0 359B -

Attachment: signature.asc
Description: Digital signature

-- 
## List details at http://lists.exim.org/mailman/listinfo/exim-users 
## Exim details at http://www.exim.org/
## Please use the Wiki with this list - http://wiki.exim.org/

Reply via email to