#!/usr/bin/perl use warnings; event_start(); print "Should be visible even there is a warning"; sub event_start { OUTER: { $SIG{__WARN__} = sub { print STDOUT "\nWarning generated:\n", @_, "\n"; last OUTER; #should break out the OUTER /event_start function }; print "Start\n"; if("test"==1){ print "create warning"; } print "Should not be shown"; } }