initialize the ARRAY and HASH slots on get
Jesse Luehrs [Wed, 12 May 2010 00:11:09 +0000 (19:11 -0500)]
otherwise you have to explicitly initialize a package global array or
hash with some value if you want to get a reference to its contents, if
it's empty on first access

lib/Stash/Manip.pm

index 3b9bcff..38177c7 100644 (file)
@@ -184,8 +184,12 @@ sub get_package_symbol {
     my $namespace = $self->namespace;
 
     # FIXME
-    $self->add_package_symbol($variable)
-        unless exists $namespace->{$name};
+    if (!exists $namespace->{$name}) {
+        my $initial = $type eq 'ARRAY' ? []
+                    : $type eq 'HASH'  ? {}
+                    : \undef;
+        $self->add_package_symbol($variable, $initial)
+    }
 
     my $entry_ref = \$namespace->{$name};