diff options
author | Jesse Luehrs <doy@tozt.net> | 2010-05-11 22:02:16 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2010-05-11 22:28:17 -0500 |
commit | 56a29840c0b7b0c4a09243ea05400c3df8ad0823 (patch) | |
tree | acfa95e8b9a31f10d7f3d52f0a8b366bca55c637 /lib | |
parent | 30d1a0987f7c01aad0c45be6b6cf6eada670007a (diff) | |
download | package-stash-56a29840c0b7b0c4a09243ea05400c3df8ad0823.tar.gz package-stash-56a29840c0b7b0c4a09243ea05400c3df8ad0823.zip |
more support for IO slots
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Stash/Manip.pm | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/lib/Stash/Manip.pm b/lib/Stash/Manip.pm index 38177c7..944eab3 100644 --- a/lib/Stash/Manip.pm +++ b/lib/Stash/Manip.pm @@ -24,6 +24,9 @@ Manipulating stashes (Perl's symbol tables) is occasionally necessary, but incredibly messy, and easy to get wrong. This module hides all of that behind a simple API. +NOTE: Most methods in this class require a variable specification that includes +a sigil. If this sigil is absent, it is assumed to represent the IO slot. + =head1 METHODS =cut @@ -75,23 +78,23 @@ sub namespace { '@' => 'ARRAY', '%' => 'HASH', '&' => 'CODE', + '' => 'IO', ); sub _deconstruct_variable_name { my ($self, $variable) = @_; - (defined $variable) + (defined $variable && length $variable) || confess "You must pass a variable name"; my $sigil = substr($variable, 0, 1, ''); - (defined $sigil) - || confess "The variable name must include a sigil"; - - (exists $SIGIL_MAP{$sigil}) - || confess "I do not recognize that sigil '$sigil'"; - - return ($variable, $sigil, $SIGIL_MAP{$sigil}); + if (exists $SIGIL_MAP{$sigil}) { + return ($variable, $sigil, $SIGIL_MAP{$sigil}); + } + else { + return ("${sigil}${variable}", '', $SIGIL_MAP{''}); + } } } |