use Errno; ... my %skater_avg = map { chomp; my( $skater, @scores ) = split /,/; { $skater => ( sum(@scores)-min(@scores)-max(@scores) ) / (@scores-2) } } <>; warn "custom message!\n" if $!{ENOENT}; #### use Errno; $SIG{__WARN__} = sub { if ( $!{ENOENT} ) { warn "custom message!\n"; } }; #### ( my %skater_avg = map { chomp; my( $skater, @scores ) = split /,/; { $skater => ( sum(@scores)-min(@scores)-max(@scores) ) / (@scores-2) } } <> ) || warn "custom message!\n";