# provided by the outermost if $1 = undef; $2 = undef; $3 = undef; { # provided by the inner if $1 = 'aa'; $2 = 'bb'; $3 = 'cc'; } #### $_ = "aabbccdd"; if ( /^(\w\w)\w\w(\w\w)\w\w$/ ) { if ( /^\w\w(\w\w)\w\w(\w\w)$/ ) { print "inner: $1 $2\n"; } print "mid: $1 $2\n"; # the inner if's vars are still accessible here } print "outer: $1 $2\n"; #### $_ = "aabbccdd"; /^(\w\w)\w\w(\w\w)\w\w$/; { /^\w\w(\w\w)\w\w(\w\w)$/; { print "inner: $1 $2\n"; } print "mid: $1 $2\n"; } print "outer: $1 $2\n";