Leser: 16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
#!/usr/bin/perl -w use strict; use warnings; use Fcntl qw(:DEFAULT :flock); my %env = ('server_errorlog' => 'testerror.log',); if ($^O =~ /mswin/i) { $env{chmod_dateien} = 0666; } else { $env{chmod_dateien} = 0600; } local $SIG{__DIE__} = sub { (my $error = shift) =~ s/[\r\n]//g; &errorlog_eintrag ($error,7); close (STDERR); }; require "math_modul2.pl"; sub errorlog_eintrag { my $meldung = shift; my $level = shift; my %apache_loglevel = ( 1 => 'debug', 2 => 'info', 3 => 'notice', 4 => 'warn', 5 => 'error', 6 => 'crit', 7 => 'alert', 8 => 'emerg', ); if (sysopen (my $errorlog, $env{server_errorlog}, O_WRONLY|O_APPEND|O_CREAT, $env{chmod_dateien})) { print $errorlog '[' . localtime () . '] [' . $apache_loglevel{$level} .'] [client ' . (defined $ENV{'REMOTE_ADDR'} ? $ENV{'REMOTE_ADDR'} : 'localhost') . '] ' . $meldung . "\n"; close $errorlog; } }
QuoteCan't locate object method "config" via package "Math::BigInt" at /usr/lib/perl5/5.8.5/Math/BigFloat.pm line 2304.
QuoteCan't locate object method "config" via package "Math::BigInt" at C:/strawberry/perl/lib/Math/BigFloat.pm line 3540.
my $mbilib = eval { Math::BigInt->config()->{lib} };
2010-03-10T09:16:03 sid burnWeiter einarbeiten habe ich keine Lust in deinem Problem da man Sachen wie __DIE__ und __WARN__ überarbeiten sein lassen sollte, da es einige Probleme hervorrufen kann. Und vielleicht ist dein Problem ja jetzt genau solch ein Beispiel warum man es nicht machen sollte.
2010-03-10T10:51:53 sid burnAnsonsten kannst du beim Start eines Programmes auch einfach STDERR in eine Datei umleiten so das warnings dort erscheinen.
2010-03-10T10:51:53 sid burnUnd wenn du komplette Programmabrüche abfangen möchtest musst du eben ein Block Eval um das komplette Programm machen, und bei einem Fehler ebenfalls nach STDERR ausgeben lassen.