use Devel::Peek; $_ = 'blah'; while(/./g){ Dump $_; foo(); Dump $_; last; } sub foo { local $_ = 'foo'; pos($_) = 2; Dump $_; } __END__ output is: SV = PVMG(0x8102ff8) at 0x80e72ac REFCNT = 1 FLAGS = (SMG,POK,pPOK) IV = 0 NV = 0 PV = 0x80f3400 "blah"\0 CUR = 4 LEN = 5 MAGIC = 0x80f3660 MG_VIRTUAL = &PL_vtbl_mglob MG_TYPE = 'g' MG_LEN = 1 SV = PVMG(0x8103018) at 0x80e7300 REFCNT = 2 FLAGS = (SMG,POK,pPOK) IV = 0 NV = 0 PV = 0x80f2008 "foo"\0 CUR = 3 LEN = 4 MAGIC = 0x80f3660 MG_VIRTUAL = &PL_vtbl_mglob MG_TYPE = 'g' MG_LEN = 2 SV = PVMG(0x8102ff8) at 0x80e72ac REFCNT = 1 FLAGS = (SMG,POK,pPOK) IV = 0 NV = 0 PV = 0x80f3400 "blah"\0 CUR = 4 LEN = 5 MAGIC = 0x80f3660 MG_VIRTUAL = &PL_vtbl_mglob MG_TYPE = 'g' MG_LEN = -1 #### use Devel::Peek; $_ = 'blah'; while(/./g){ Dump $_; for ('foo'){ # implicit localization of $_ pos($_) = 2; Dump $_; } Dump $_; last; } __END__ output: SV = PVMG(0x8102ff8) at 0x80e72ac REFCNT = 1 FLAGS = (SMG,POK,pPOK) IV = 0 NV = 0 PV = 0x80f4d78 "blah"\0 CUR = 4 LEN = 5 MAGIC = 0x80f35d0 MG_VIRTUAL = &PL_vtbl_mglob MG_TYPE = 'g' MG_LEN = 1 SV = PVMG(0x8103018) at 0x80f90f0 REFCNT = 3 FLAGS = (SMG,POK,READONLY,pPOK) IV = 0 NV = 0 PV = 0x80f38e8 "foo"\0 CUR = 3 LEN = 4 MAGIC = 0x80f1cb0 MG_VIRTUAL = &PL_vtbl_mglob MG_TYPE = 'g' MG_LEN = 2 SV = PVMG(0x8102ff8) at 0x80e72ac REFCNT = 1 FLAGS = (SMG,POK,pPOK) IV = 0 NV = 0 PV = 0x80f4d78 "blah"\0 CUR = 4 LEN = 5 MAGIC = 0x80f35d0 MG_VIRTUAL = &PL_vtbl_mglob MG_TYPE = 'g' MG_LEN = 1 #### $main::var = 12; { local $main::var = 10; $main::bar = \$main::var; } $$main::bar = 42; # doesn't affect $main::var print $main::var; # prints: 12