AnyEvent
view release on metacpan or search on metacpan
should have a look at "PERL_ANYEVENT_LOG", which allows much more
complex specifications.
When set to 0 ("off"), then no messages whatsoever will be logged
with everything else at defaults.
When set to 5 or higher ("warn"), AnyEvent warns about unexpected
conditions, such as not being able to load the event model specified
by "PERL_ANYEVENT_MODEL", or a guard callback throwing an exception
- this is the minimum recommended level for use during development.
When set to 7 or higher (info), AnyEvent reports which event model
it chooses.
When set to 8 or higher (debug), then AnyEvent will report extra
information on which optional modules it loads and how it implements
certain features.
"PERL_ANYEVENT_LOG"
Accepts rather complex logging specifications. For example, you
could log all "debug" messages of some module to stderr, warnings
and above to stderr, and errors and above to syslog, with:
PERL_ANYEVENT_LOG=Some::Module=debug,+log:filter=warn,+%syslog:%syslog=error,syslog
For the rather extensive details, see AnyEvent::Log.
This variable is evaluated when AnyEvent (or AnyEvent::Log) is
loaded, so will take effect even before AnyEvent has initialised
itself.
Note that specifying this environment variable causes the
AnyEvent::Log module to be loaded, while "PERL_ANYEVENT_VERBOSE"
does not, so only using the latter saves a few hundred kB of memory
unless a module explicitly needs the extra features of
AnyEvent::Log.
"PERL_ANYEVENT_STRICT"
AnyEvent does not do much argument checking by default, as thorough
argument checking is very costly. Setting this variable to a true
value will cause AnyEvent to load "AnyEvent::Strict" and then to
thoroughly check the arguments passed to most method calls. If it
finds any problems, it will croak.
In other words, enables "strict" mode.
Unlike "use strict" (or its modern cousin, "use common::sense", it
is definitely recommended to keep it off in production. Keeping
"PERL_ANYEVENT_STRICT=1" in your environment while developing
programs can be very useful, however.
"PERL_ANYEVENT_DEBUG_SHELL"
If this env variable is nonempty, then its contents will be
interpreted by "AnyEvent::Socket::parse_hostport" and
"AnyEvent::Debug::shell" (after replacing every occurance of $$ by
the process pid). The shell object is saved in
$AnyEvent::Debug::SHELL.
This happens when the first watcher is created.
For example, to bind a debug shell on a unix domain socket in
/tmp/debug<pid>.sock, you could use this:
PERL_ANYEVENT_DEBUG_SHELL=/tmp/debug\$\$.sock perlprog
# connect with e.g.: socat readline /tmp/debug123.sock
Or to bind to tcp port 4545 on localhost:
PERL_ANYEVENT_DEBUG_SHELL=127.0.0.1:4545 perlprog
# connect with e.g.: telnet localhost 4545
Note that creating sockets in /tmp or on localhost is very unsafe on
multiuser systems.
"PERL_ANYEVENT_DEBUG_WRAP"
Can be set to 0, 1 or 2 and enables wrapping of all watchers for
debugging purposes. See "AnyEvent::Debug::wrap" for details.
"PERL_ANYEVENT_MODEL"
This can be used to specify the event model to be used by AnyEvent,
before auto detection and -probing kicks in.
It normally is a string consisting entirely of ASCII letters (e.g.
"EV" or "IOAsync"). The string "AnyEvent::Impl::" gets prepended and
the resulting module name is loaded and - if the load was successful
- used as event model backend. If it fails to load then AnyEvent
will proceed with auto detection and -probing.
If the string ends with "::" instead (e.g. "AnyEvent::Impl::EV::")
then nothing gets prepended and the module name is used as-is (hint:
"::" at the end of a string designates a module name and quotes it
appropriately).
For example, to force the pure perl model (AnyEvent::Loop::Perl) you
could start your program like this:
PERL_ANYEVENT_MODEL=Perl perl ...
"PERL_ANYEVENT_IO_MODEL"
The current file I/O model - see AnyEvent::IO for more info.
At the moment, only "Perl" (small, pure-perl, synchronous) and
"IOAIO" (truly asynchronous) are supported. The default is "IOAIO"
if AnyEvent::AIO can be loaded, otherwise it is "Perl".
"PERL_ANYEVENT_PROTOCOLS"
Used by both AnyEvent::DNS and AnyEvent::Socket to determine
preferences for IPv4 or IPv6. The default is unspecified (and might
change, or be the result of auto probing).
Must be set to a comma-separated list of protocols or address
families, current supported: "ipv4" and "ipv6". Only protocols
mentioned will be used, and preference will be given to protocols
mentioned earlier in the list.
This variable can effectively be used for denial-of-service attacks
against local programs (e.g. when setuid), although the impact is
likely small, as the program has to handle connection and other
failures anyways.
Examples: "PERL_ANYEVENT_PROTOCOLS=ipv4,ipv6" - prefer IPv4 over
( run in 0.635 second using v1.01-cache-2.11-cpan-39bf76dae61 )