sysopen(STDOUT,$logfile,O_WRONLY | O_APPEND | O_CREAT) or die $!; sysopen(STDERR,$global,O_WRONLY | O_APPEND | O_CREAT) or die $!; # WARNINGS können auch in eine andere, separate Logdatei # weggeschrieben werden... das bevorzuge ich zum Beispiel. sysopen(WARN,"$warns",O_WRONLY | O_APPEND | O_CREAT) or die $!; $SIG{_ _WARN_ _} = \&warnHandler; $SIG{_ _DIE_ _}  = \&dieHandler; sub warnHandler {   print WARN getTime(1), @_; } sub dieHandler {   print STDOUT getTime(1), @_;   # hier gibt es zwei print's, weil bei mir eine Meldung in eine   # globale überwachte error-Datei geschrieben wird...   # die andere ist für das normale Logfile   print STDERR getTime(1), "$0 ", @_;   exit(9); } sub getTime {   my $format = shift;   my @time   = (localtime)[reverse 0..5];   $time[0] += 1900;   $time[1]++;   if (!$format) {      foreach (@time) { $_ = "0$_" if $_ < 10; }      return \@time;   } elsif ($format == 1) {      return sprintf '%04d-%02d-%02d %02d:%02d:%02d ', @time[0..5];   } elsif ($format == 2) {      return sprintf '%04d-%02d-%02d', @time[0..2];   } elsif ($format == 3) {      return sprintf '%02d-%02d-%02d', @time[3..5];   } elsif ($format == 4) {      return sprintf '%04d-%02d-%02d-%02d:%02d', @time[0..4];   } }