#!/usr/bin/perl -- use strict; use warnings; use autodie qw/ open close /; use threads stack_size => 4096; { open my $fh, '<', __FILE__; threads->create(\&close_once, $fh )->join; threads->create(\&close_twice, $fh )->join; close $fh; close $fh; ## 11 } sub close_once { my( $fh ) = @_; close $fh; } sub close_twice { my( $fh ) = @_; close $fh; eval { close $fh; 1 } or warn $@; ## 20 return; } __END__ Can't close(GLOB(0xc38d6c)) filehandle: 'Bad file descriptor' at threads-close-filehandle-LEXICAL.pl line 20 Can't close(GLOB(0x99b26c)) filehandle: 'Bad file descriptor' at threads-close-filehandle-LEXICAL.pl line 11