opi: STDERR umleiten, aber wie flock einsetzen?

Beitrag lesen

Hallo Struppi,

Nein. Denn dein Programm stirbt ja und bleibt dort. Der Mechanismus von die ist dir nicht klar.

Doch. Vielleicht war da bei mir ein Gedankenfehler. Mit "die" stirbt
der Prozess und führt nachfolgenden Code nicht mehr aus.

Wenn ein "warn" oder ein "die" ausgelöst wird, dann wird die
Subfunktion ausgeführt, die hinter dem Signalhändler angegeben ist.

  
use strict;  
use warnings;  
  
my $warn = [];  
my $die  = [];  
  
$SIG{__WARN__} = sub { push @$warn, @_; };  
$SIG{__DIE__}  = sub { print "DIE AUSGABE VON \"DIE\" ist -> ", @_; };  
  
warn "WARNUNG\n";  
  
print @$warn;  
print @$die;  
  
die "STERBEN\n";  
  
print "DIE LETZTE PRINT ANWEISUNG WIRD NATUERLICH NICHT AUSGEGEBEN\n";  

Aber warum erhalte ich nun die Ausgabe:

WARNUNG
DIE AUSGABE VON "DIE" ist -> STERBEN
STERBEN

"STERBEN" wird zwei mal ausgegeben. Warum das?

Greez,
opi

--
Selfcode: ie:( fl:( br:^ va:) ls:] fo:) rl:( n4:? ss:| de:] ch:? mo:|