Thread Problem mit Filehandle im END Block
(8 answers)
Opened by PROXEN at 2014-08-04 20:23
Hi,
kann ich so nicht nachvollziehen: Code (perl): (dl
)
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 #! /usr/bin/env perl use strict; use warnings; sub interrupt { warn "CTRL+C detected.\n"; die; } sub ask_user { my $msg = shift; print $msg; chomp( my $input = <STDIN> || '' ); return $input; } $SIG{INT} = \&interrupt; open my $logh, '>', "/tmp/log.txt" or die "$!"; print $logh "Opened Logfile.\n"; while ( my $input = ask_user("Enter something: ") ) { print $logh $input, "\n"; } close $logh or die "$!"; END { return unless fileno $logh; print $logh "Close Logfile.\n"; close $logh or warn $!; } "Beende" ich die while-Schleife mit einem CTRL+D, wird das logfile still geschlossen, bevor der END-Block ausgeführt wird. Breche ich die Schleife mit einem CTRL+C ab, greift das die() in interrupt() und das Logfile wird erst im END-Block geschlossen. PS: Probiere gerade mit Deinem Code herum. Da habe ich auch das von Dir beschriebene Verhalten. Die Ursache habe ich noch nicht gefunden... Last edited: 2014-08-04 21:53:54 +0200 (CEST) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |