Hi, I'm using the stable mon-1.2.0-1 under Ubuntu 11.04 (Perl 5.10.1), and I
noticed that mon wasn't logging anything at all in syslog. Further
inspection revealed that the problem seems to be in the redefined syslog()
function:
no warnings; # Redefining syslog
sub syslog {
eval {
local $SIG{"__DIE__"}= sub { };
my @log = map { s/\%//mg; } @_;
Sys::Syslog::syslog(@log);
}
}
since $_ is aliased in a map {} block, when the function is passed constant
strings, the map {} on @_ fails with a "modification of a read-only value
attempted". However this is not apparent, not even in debug mode, since it
happens inside the eval{} block.
Suggested change (for example):
no warnings; # Redefining syslog
sub syslog {
eval {
local $SIG{"__DIE__"}= sub { };
my @log = @_;
s/\%//mg for (@log);
Sys::Syslog::syslog(@log);
}
}
Regards,
--
D.
_______________________________________________
mon mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/mon