#!/usr/bin/perl use strict; use warnings; print "Start\n"; event_start(); print "Should be visible even there is a warning\n"; sub event_start { my $ret=0; my $val='test'; my $ok=eval { local $SIG{__WARN__} = sub { die( "\nWarning generated:\n", @_ ); }; $ret++ if($test==1) ; return 1; }; unless($ok) { my $func_name=(caller(0))[3]; print "format error in $func_name ($@)\n"; return 0; } return $ret; }