Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: exim: users
Re: two failing approaches to solving my problem - looking for help
 

Index | Next | Previous | View Flat


hs at schlittermann

Jun 24, 2009, 12:59 PM


Views: 185
Permalink
Re: two failing approaches to solving my problem - looking for help

Hello Josh,

exim-users.josh[at]spamgourmet.com <exim-users.josh[at]spamgourmet.com> (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 -
Attachments: signature.asc (0.19 KB)

Subject User Time
Re: two failing approaches to solving my problem - looking for help hs at schlittermann Jun 24, 2009, 12:59 PM

  Index | Next | Previous | View Flat
 
 


Interested in having your list archived? Contact lists@gossamer-threads.com
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.