]> git.vpit.fr Git - perl/modules/Scope-Upper.git/blobdiff - lib/Scope/Upper.pm
Switch to qw<>
[perl/modules/Scope-Upper.git] / lib / Scope / Upper.pm
index 67cc80f25cacee55a60cd57b2e0e1130985f9e82..63ca3bf77245e994384b12bec989e4d2a497eda0 100644 (file)
@@ -9,13 +9,13 @@ Scope::Upper - Act on upper scopes.
 
 =head1 VERSION
 
-Version 0.10
+Version 0.14
 
 =cut
 
 our $VERSION;
 BEGIN {
- $VERSION = '0.10';
+ $VERSION = '0.14';
 }
 
 =head1 SYNOPSIS
@@ -24,7 +24,7 @@ L</reap>, L</localize>, L</localize_elem>, L</localize_delete> and L</WORDS> :
 
     package Scope;
 
-    use Scope::Upper qw/reap localize localize_elem localize_delete :words/;
+    use Scope::Upper qw<reap localize localize_elem localize_delete :words>;
 
     sub new {
      my ($class, $name) = @_;
@@ -87,7 +87,7 @@ L</unwind> and L</want_at> :
 
     package Try;
 
-    use Scope::Upper qw/unwind want_at :words/;
+    use Scope::Upper qw<unwind want_at :words>;
 
     sub try (&) {
      my @result = shift->();
@@ -99,14 +99,14 @@ L</unwind> and L</want_at> :
 
     sub zap {
      try {
-      my @things = qw/a b c/;
+      my @things = qw<a b c>;
       return @things; # returns to try() and then outside zap()
       # not reached
      };
      # not reached
     }
 
-    my @stuff = zap(); # @stuff contains qw/a b c/
+    my @stuff = zap(); # @stuff contains qw<a b c>
     my $stuff = zap(); # $stuff contains 3
 
 =head1 DESCRIPTION
@@ -173,8 +173,8 @@ For example,
 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.
-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.
+When the symbol is given by a string, it is resolved when the actual localization takes place and not when L</localize> is called.
+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 L</localize> call was compiled.
 For example,
 
     {
@@ -202,7 +202,8 @@ Although I believe it shouldn't be a problem as glob slots definedness is pretty
 =head2 C<localize_elem $what, $key, $value, $context>
 
 Introduces a C<local $what[$key] = $value> or C<local $what{$key} = $value> delayed to the time of first return into the upper scope denoted by C<$context>.
-Just like for L</localize>, the type of localization is determined from which kind of reference C<$value> is when C<$what> is a glob, and from the sigil when it's a string.
+Unlike L</localize>, C<$what> must be a string and the type of localization is inferred from its sigil.
+The two only valid types are array and hash ; for anything besides those, L</localize_elem> will throw an exception.
 C<$key> is either an array index or a hash key, depending of which kind of variable you localize.
 
 If C<$what> is a string pointing to an undeclared variable, the variable will be vivified as soon as the localization occurs and emptied when it ends, although it will still exist in its glob.
@@ -379,13 +380,13 @@ Same goes for the words L</TOP>, L</HERE>, L</UP>, L</SUB>, L</EVAL>, L</SCOPE>
 
 =cut
 
-use base qw/Exporter/;
+use base qw<Exporter>;
 
 our @EXPORT      = ();
 our %EXPORT_TAGS = (
- funcs  => [ qw/reap localize localize_elem localize_delete unwind want_at/ ],
- words  => [ qw/TOP HERE UP SUB EVAL SCOPE CALLER/ ],
- consts => [ qw/SU_THREADSAFE/ ],
+ funcs  => [ qw<reap localize localize_elem localize_delete unwind want_at> ],
+ words  => [ qw<TOP HERE UP SUB EVAL SCOPE CALLER> ],
+ consts => [ qw<SU_THREADSAFE> ],
 );
 our @EXPORT_OK   = map { @$_ } values %EXPORT_TAGS;
 $EXPORT_TAGS{'all'} = [ @EXPORT_OK ];
@@ -425,11 +426,15 @@ L<XSLoader> (standard since perl 5.006).
 
 =head1 SEE ALSO
 
+L<perlfunc/local>, L<perlsub/"Temporary Values via local()">.
+
 L<Alias>, L<Hook::Scope>, L<Scope::Guard>, L<Guard>.
 
 L<Continuation::Escape> is a thin wrapper around L<Scope::Upper> that gives you a continuation passing style interface to L</unwind>.
 It's easier to use, but it requires you to have control over the scope where you want to return.
 
+L<Scope::Escape>.
+
 =head1 AUTHOR
 
 Vincent Pit, C<< <perl at profvince.com> >>, L<http://www.profvince.com>.
@@ -457,7 +462,7 @@ Thanks to Shawn M. Moore for motivation.
 
 =head1 COPYRIGHT & LICENSE
 
-Copyright 2008,2009,2010 Vincent Pit, all rights reserved.
+Copyright 2008,2009,2010,2011 Vincent Pit, all rights reserved.
 
 This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.