#!/usr/bin/perl -- use feature qw (switch); use Try::Tiny; my $uv; given (17) { when (3) { print "three\n"; }; when (17) { #~ local $_; # grr Can't localize lexical variable $_ #~ my $_; ## doesn't help, Try::Tiny code is using global $_ #~ local *_; ## doesn't help , here $_ refers to lexical $_ our $_; # THIS HELPS try { print "In try block\n"; die( "Substitute undefined variable $uv\n"); print "Still in try block\n"; } catch { print "We caught global \$@ = $@\n"; print "We caught lexical \$_ = $_\n"; print "We caught global \$::_ = $::_\n"; print "We caught global \$_[0] = $_[0]\n"; }; } } __END__ In try block We caught global $@ = We caught lexical $_ = Substitute undefined variable We caught global $::_ = Substitute undefined variable We caught global $_[0] = Substitute undefined variable