AC-DC
view release on metacpan or search on metacpan
lib/AC/ConfigFile/Simple.pm view on Meta::CPAN
my $changed;
for my $file ( @{$me->{_files}} ){
my $mtime = (stat($file))[9];
$changed = 1 if $mtime > $me->{_lastconf};
}
return unless $changed;
verbose("config file changed. reloading");
$me->{_lastconf} = $now;
eval {
$me->_read();
verbose("installed new config file");
if( my $f = $me->{onreload} ){
$f->();
}
};
if(my $e = $@){
problem("error reading new config file: $e");
return;
}
lib/AC/DC/IO/Forked.pm view on Meta::CPAN
if( !defined($pid) ){
problem("cannot fork: $!");
return ;
}elsif( $pid ){
# parent
close $fdb;
}else{
# child
close $fda;
eval { $me->_do_child($fdb) };
_exit( $@ ? 1 : 0 );
}
$me->{pid} = $pid;
$me->init($fda);
$me->wantread(1);
return $me;
}
lib/AC/Daemon.pm view on Meta::CPAN
package AC::Daemon;
use AC::Import;
use Sys::Syslog;
use Time::HiRes;
use POSIX;
use strict;
BEGIN {
# use it if we've got it
eval {
require AC::Error; AC::Error->import();
};
if($@){
*daemon_error = sub {};
*stack_trace = sub {};
}
}
our @EXPORT = qw(daemonize run_and_watch initlog debugmsg verbose problem fatal);
lib/AC/Daemon.pm view on Meta::CPAN
$nomail = $quiet;
$verbose = $verb if defined $verb;
}
sub run_and_watch {
my $optf = shift;
my $func = shift;
$SIG{USR2} = \&_send_trace;
eval {
$func->();
};
if( my $e = $@ ){
if( $optf ){
$e .= "\n\n" . stack_trace();
verbose( "UNCAUGHT ERROR: $e" );
}else{
fatal( "UNCAUGHT ERROR: $e" );
}
}
( run in 0.580 second using v1.01-cache-2.11-cpan-98e64b0badf )