Das ganze ist ein bisschen schräg wegen der Doppelfunktion von
select. Die -1 als Rückgabewert (und einen Wert in
$!) bekommst Du
nur von der Aufrufvariante
select RBITS,WBITS,EBITS,TIMEOUT. Nur in dieser Variante wird nämlich die C-Funktion
select verwendet (und in dem Abschnitt taucht es auch in der Dokumentation auf).
Verblüffenderweise kannst Du in Perl mit
select FILEHANDLE ein Handle auch
zuerst selektieren und
danach aufmachen.
1
2
3
4
5
6
7
8
9
10
11
12
13
use 5.010;
use strict;
use warnings;
use autodie;
my $fh;
my $old = select($fh);
say 'Ist noch gar nicht offen!';
open ($fh,'>','test.txt');
say 'Aber jetzt!';
close $fh;
say 'Und schon wieder zu.';
Um herauszufinden, ob ein Filehandle gerade offen ist, nimmst Du
perlfunc fileno.