Thread Problem mit Filehandle im END Block (8 answers)
Opened by PROXEN at 2014-08-04 20:23

PROXEN
 2014-08-04 21:53
#176711 #176711
User since
2013-07-23
21 Artikel
BenutzerIn
[default_avatar]
Hallo,

wenn du nochmal diesen Code ausführst und bei Pause mit STRG+C beendest, wirst du sehen, dass im END Block nichts ins File geschrieben wird und der Filehandle nicht geschlossen werden kann. Ich verwende einen anderen Ansatz und möchte print auch im END Block verwenden und zwischen diesen Filehandels mit select hin und her wechseln sonst muss ich immer im print umständlich das Filehandle mit angeben.

thx proxen



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
$SIG{INT} = \&interrupt;
 
open LOGFILE, "|-", "tee some_file.out";
LOGFILE->autoflush(1);

select LOGFILE;
print "fileconsole!\n";
print "pause\n";
my $in = <STDIN>;
select STDOUT;
print "console1\n";
 
die;
sub interrupt {
    print  "Caught a control c!\n";
    die;   
}

END { 

  if(fileno(LOGFILE)){
    print "close logfile\n";
    close(LOGFILE) or warn;
  }
}

View full thread Problem mit Filehandle im END Block