use strict; use warnings; use subs qw( open ); use Errno qw( EPIPE ); sub open { $! = EPIPE; return 0; } open(my $fh, '<', \my $buf) or die("open: $!\n"); #### open: Broken pipe #### package ModuleToTest; sub f { open(my $fh, '<', \my $buf) or die("open: $!\n"); } 1; #### use Test::More tests => 1; { package ModuleToTest; use subs qw( open ); use Errno qw( EPIPE ); sub open { $! = EPIPE; return 0; } } use Module; ok( !eval { Module->f(); 1 } ); #### 1..1 ok 1