X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FStash%2FManip.pm;h=173ba135c600a5041555d0d9c9ad74a40824146f;hb=a2a2164aadab29b7424ea8f581413cf6a3b185b1;hp=40e9567aa9451e09336164f467b3039f603f3078;hpb=3634ce60eff13a438a24efd8b61192aadff7d0de;p=gitmo%2FPackage-Stash.git diff --git a/lib/Stash/Manip.pm b/lib/Stash/Manip.pm index 40e9567..173ba13 100644 --- a/lib/Stash/Manip.pm +++ b/lib/Stash/Manip.pm @@ -204,12 +204,17 @@ sub get_package_symbol { my $namespace = $self->namespace; - # FIXME if (!exists $namespace->{$name}) { - my $initial = $type eq 'ARRAY' ? [] - : $type eq 'HASH' ? {} - : \undef; - $self->add_package_symbol($variable, $initial) + if ($type eq 'ARRAY') { + $self->add_package_symbol($variable, []); + } + elsif ($type eq 'HASH') { + $self->add_package_symbol($variable, {}); + } + else { + # FIXME + $self->add_package_symbol($variable) + } } my $entry_ref = \$namespace->{$name}; @@ -263,25 +268,25 @@ sub remove_package_symbol { $io = $self->get_package_symbol($io_desc) if $self->has_package_symbol($io_desc); } elsif ($type eq 'ARRAY') { - $scalar = $self->get_package_symbol($scalar_desc) if $self->has_package_symbol($scalar_desc); + $scalar = $self->get_package_symbol($scalar_desc); $hash = $self->get_package_symbol($hash_desc) if $self->has_package_symbol($hash_desc); $code = $self->get_package_symbol($code_desc) if $self->has_package_symbol($code_desc); $io = $self->get_package_symbol($io_desc) if $self->has_package_symbol($io_desc); } elsif ($type eq 'HASH') { - $scalar = $self->get_package_symbol($scalar_desc) if $self->has_package_symbol($scalar_desc); + $scalar = $self->get_package_symbol($scalar_desc); $array = $self->get_package_symbol($array_desc) if $self->has_package_symbol($array_desc); $code = $self->get_package_symbol($code_desc) if $self->has_package_symbol($code_desc); $io = $self->get_package_symbol($io_desc) if $self->has_package_symbol($io_desc); } elsif ($type eq 'CODE') { - $scalar = $self->get_package_symbol($scalar_desc) if $self->has_package_symbol($scalar_desc); + $scalar = $self->get_package_symbol($scalar_desc); $array = $self->get_package_symbol($array_desc) if $self->has_package_symbol($array_desc); $hash = $self->get_package_symbol($hash_desc) if $self->has_package_symbol($hash_desc); $io = $self->get_package_symbol($io_desc) if $self->has_package_symbol($io_desc); } elsif ($type eq 'IO') { - $scalar = $self->get_package_symbol($scalar_desc) if $self->has_package_symbol($scalar_desc); + $scalar = $self->get_package_symbol($scalar_desc); $array = $self->get_package_symbol($array_desc) if $self->has_package_symbol($array_desc); $hash = $self->get_package_symbol($hash_desc) if $self->has_package_symbol($hash_desc); $code = $self->get_package_symbol($code_desc) if $self->has_package_symbol($code_desc); @@ -292,7 +297,7 @@ sub remove_package_symbol { $self->remove_package_glob($name); - $self->add_package_symbol($scalar_desc => $scalar) if defined $scalar; + $self->add_package_symbol($scalar_desc => $scalar); $self->add_package_symbol($array_desc => $array) if defined $array; $self->add_package_symbol($hash_desc => $hash) if defined $hash; $self->add_package_symbol($code_desc => $code) if defined $code;