Jemand zu Hause?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.
Wie installiert man ein Modul?