]> git.vpit.fr Git - perl/modules/Scope-Upper.git/commitdiff
A better explaination of how string symbols work
authorVincent Pit <vince@profvince.com>
Thu, 15 Apr 2010 22:44:05 +0000 (00:44 +0200)
committerVincent Pit <vince@profvince.com>
Thu, 15 Apr 2010 22:44:05 +0000 (00:44 +0200)
lib/Scope/Upper.pm

index 51cc4c48baad4535d26f83d48de2df56b3711b2b..91219ff91e5b7fcd63cf1027d022412d35bce5d1 100644 (file)
@@ -144,11 +144,23 @@ will set C<$x> to a reference to the string C<'foo'>.
 Other sigils (C<'@'>, C<'%'>, C<'&'> and C<'*'>) require C<$value> to be a reference of the corresponding type.
 
 When the symbol is given by a string, it is resolved when the actual localization takes place and not when C<localize> is called.
-This means that
+Thus, if the symbol name is not qualified, it will refer to the variable in the package where the localization actually takes place and not in the one where the C<localize> call was compiled.
+For example,
+
+    {
+     package Scope;
+     sub new { localize '$tag', $_[0] => UP }
+    }
 
-    sub tag { localize '$x', $_[0] => UP }
+    {
+     package Tool;
+     {
+      Scope->new;
+      ...
+     }
+    }
 
-will localize in the caller's namespace.
+will localize C<$Tool::tag> and not C<$Scope::tag>.
 
 =back